Wątek przeniesiony 2015-02-07 14:32 z C/C++ przez Shalom.

Co oznacza "i" w argumencie funkcji?

0

cześć mam pytaie mam taki oto kod

PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
	return Py_BuildValue("i", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
} 

"i" = int?
jeśli bym chciał zmienić to na unsigned long long to muszę zmienić "i" na "ULL" ?
i po stronie serwera z int na unsigned long long czy wystarczy samo long long?

0

dałeś mi do C i pythona a to jest c++ lol? i próbowałem nie działa wywala błąd mam 2147483647. a w grze wywala mi kosmiczna liczbę

3

Słabo mi jak czytam takie posty.

This manual documents the API used by C and C++ programmers who want to write extension modules or embed Python

I z tego API właśnie korzytasz. Więc łaskawie mógłbyś korzystać z tejże dokumentacji. Jakbyś pokazał jak próbowałeś to może by sie coś poradziło...

0

próbowałem tak // binary

PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    return Py_BuildValue("K", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
} 

a tak python // client

money = 0
		if text and text.isdigit():
			try:
				money = uint64(text)
			except ValueError:
				money = 19999999999

po stronie serwera

	//LIMIT_GOLD
	GOLD_MAX = 40000000000LLU,
long long      gold
1

unsigned long long gold; jeśli już

0

a mam pytanie a to jest różnica jak daje ULL czy LLU?

nie dziala dalej po 2 147 483 648 wywala liczbę 200kkkkk

0

A jesteś pewien że to nie wynika z tego ze coś tak sam masz w kodzie zaklepane? Bo gdyby problem leżał tam gdzie ci sie wydaje to po 2 147 483 648 wyskoczyłaby ujemna liczba. Może po prostu w kodzie jest jakiś check na to?

0

wychodzi mi liczba unsigned long long po przekroczeniu liczby int. jak dodam 1 złota to wywala 0 i do liczby int działa dobrze ale potem wywala liczbę unsigned long long

0

A jesteś pewien że wszędzie masz faktycznie unsigned long long int? Bo ja obstawiam że nie i tyle.

0

mam wszędzie unsigned long long
a przy wartości np 8678678678678ULL

1

Cudów nie ma. Pozapinaj się debugerem i popatrz jakie typy danych ci tam śmigają. Ja myśle że gdzieś masz konwersje na inta.

0

sprawdziłem wszystko wszędzie zmieniłem oprócz bazy danych w c++

 			"gold = %d, "

znalazłem coś takiego

0

No %d to ci long longa nie wypisze...

0

to zmiennie na %llu.a jak nie będzie działać to chyba problem lezy w bince?

0

Problem moze leżeć w wielu miejscach dlatego bez debugera to jak wróżenie z fusów ;]

0

jak mogę uzyć debuggera? używam windowsa a kompiluję za pomocą freebsd i vs 2008

0

Skompiluj z symbolami dla debugera a potem uruchom z poziomu debugera ten program.

0

tak da się tylko skompilować binke bo game to jest jako plik

1 użytkowników online, w tym zalogowanych: 0, gości: 1