Wysłany: 2015-02-15, 13:43
Avira15
Wiek: 33 Na forum: 4921 dni Posty: 34
Witam!
Tak to znowu ja . Chc? zrobic sprzedaz auta za pomoca komendy i zrobilem cos takiego:
Kod: CMD:sprzedaj(playerid, params[])
{
if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
{
for(new nr = 0; nr < ILOSC_WOZOW; nr++)
{
if(IsPlayerInVehicle(playerid, KupneWozy[nr]))
{
new nickk, cenak;
if(sscanf(params, "dd[64]", nickk, cenak))
return SendClientMessage(playerid, COLOR_WHITE, "Wpisz /sprzedaj [nick] [cena]");
if(cenak < 1)
return SendClientMessage(playerid, CZERWONY, "Cena zbyt niska!");
if(GetPlayerMoney(nickk) < cenak)
return SendClientMessage(playerid, CZERWONY,"Gracza nie stac na te auto !");
new Float:xid,Float:yid,Float:zid;
GetPlayerPos(playerid,xid,yid,zid);
if(!IsPlayerInRangeOfPoint(nickk,10.0,xid,yid,zid))
return SendClientMessage(playerid, BIALY,"Gracz musi byc w zasiegu maksymalnym {FA0202}10 m{FFFFFF} od ciebie!");
new ss[256];
format(ss, sizeof(ss), "Chcesz kupic od gracza %s pojazd za (%d scr) ?\n", playerid, cenak);
ShowPlayerDialog(nickk, KUPIEC, DIALOG_STYLE_MSGBOX, "Oferta",ss,"Tak","Nie");
SendClientMessage(playerid, KOLOR_ZIELONY, "Zaoferowales kupno swojego auta dla innego gracza !");
}
}
}
else
{
SendClientMessage(playerid, KOLOR_ZIELONY, "Musisz by? w pojezdzie!");
}
return 1;
}
dialogres:
Kod: if(dialogid == KUPIEC)
{
if(response)
{
for(new nr = 0; nr < ILOSC_WOZOW; nr++)
{
new nickk, cenak;
GivePlayerScore(playerid,-cenak);
GivePlayerScore(nickk,cenak);
strmid(PrivateCar[nr][cWlasciciel], Nick(nickk), 0, strlen(Nick(nickk)), 64);
ZapiszWoz(nr);
SendClientMessage(nickk, CZERWONY,"Gracz kupil Twoj pojazd");
SendClientMessage(playerid, CZERWONY,"Kupiles te auto !");
}
}
else if(!response)
{
new nickk;
SendClientMessage(playerid, CZERWONY,"Gracz nie kupil Twojego pojazdu");
SendClientMessage(nickk, CZERWONY,"Anulowales !");
}
}
Dla kupujacego wyswietla dobrze gui i wgl, lecz po kupieniu nie pobiera kwoty i nie daje dla sprzedajacego, oraz nie zmienia wlasciciela auta. Oto moj zapis aut i wczytanie:
Kod: forward WczytajWozy();
public WczytajWozy()
{
new file[25];
for(new nr = 0; nr < ILOSC_WOZOW; nr++)
{
format(file,sizeof(file),WOZY_FILE,nr);
if(DOF_FileExists(file))
{
PrivateCar[nr][cAktywny]=DOF_GetInt(file,"Aktywny");
PrivateCar[nr][cKupiony]=DOF_GetInt(file,"Kupiony");
format(PrivateCar[nr][cWlasciciel], MAX_PLAYER_NAME, DOF_GetString(file,"Wlasciciel"));
PrivateCar[nr][cModel]=DOF_GetInt(file,"Model");
PrivateCar[nr][cX]=DOF_GetFloat(file,"X");
PrivateCar[nr][cY]=DOF_GetFloat(file,"Y");
PrivateCar[nr][cZ]=DOF_GetFloat(file,"Z");
PrivateCar[nr][cRX]=DOF_GetFloat(file,"rX");
PrivateCar[nr][cColor1]=DOF_GetInt(file,"Color1");
PrivateCar[nr][cColor2]=DOF_GetInt(file,"Color2");
PrivateCar[nr][cRespawn]=DOF_GetInt(file,"Respawn");
PrivateCar[nr][cKoszt]=DOF_GetInt(file,"Koszt");
PrivateCar[nr][cLock]=DOF_GetInt(file,"Lock");
//AddVehicleComponent(idWczytanegoPojazdu, PrivateCar[nr][cFelgi]);
//KupneWozy[nr] = AddVehicleComponent (PrivateCar[nr][cModel], PrivateCar[nr][cFelgi]);
KupneWozy[nr] = AddStaticVehicleEx(PrivateCar[nr][cModel],PrivateCar[nr][cX],PrivateCar[nr][cY],PrivateCar[nr][cZ],PrivateCar[nr][cRX],PrivateCar[nr][cColor1],PrivateCar[nr][cColor2],PrivateCar[nr][cRespawn]);
printf("Zaladowano Prywatny Samochod: %d", nr);
}
else
{
PrivateCar[nr][cAktywny] = 0;
}
}
return 1;
}
forward ZapiszWoz(nr);
public ZapiszWoz(nr)
{
new file[25];
format(file,sizeof(file),WOZY_FILE,nr);
if(!DOF_FileExists(file))
{
DOF_CreateFile(file);
}
DOF_SetInt(file, "Aktywny", PrivateCar[nr][cAktywny]);
DOF_SetInt(file,"Kupiony", PrivateCar[nr][cKupiony]);
DOF_SetString(file,"Wlasciciel", PrivateCar[nr][cWlasciciel]);
DOF_SetInt(file,"Model", PrivateCar[nr][cModel]);
DOF_SetFloat(file,"X", PrivateCar[nr][cX]);
DOF_SetFloat(file,"Y", PrivateCar[nr][cY]);
DOF_SetFloat(file,"Z", PrivateCar[nr][cZ]);
DOF_SetFloat(file,"rX", PrivateCar[nr][cRX]);
DOF_SetInt(file,"Color1", PrivateCar[nr][cColor1]);
DOF_SetInt(file,"Color2", PrivateCar[nr][cColor2]);
DOF_SetInt(file,"Respawn", PrivateCar[nr][cRespawn]);
DOF_SetInt(file,"Koszt", PrivateCar[nr][cKoszt]);
DOF_SetInt(file,"Lock", PrivateCar[nr][cLock]);
DOF_SaveFile();
return 1;
}
---------------------------------- DRUGA SPRAWA ----------------------------------------
Otoz po rejeatracji all ok, ladnie sie dane zapisuja i wgl, ale gdy wejdzie pare osob na serwer to juz dla jakiegos gracza zeruje konto. Oto moj zapis kont i wczyt:
Kod: stock WczytajGracza(playerid)
{
new string[500];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid, Gname, sizeof(Gname));
format(string, sizeof(string), "/DT/Gracze/%s.ini",Gname);
//
SetPlayerMoney(playerid, dini_Int(string, "Kasa"));
Gracz[playerid][Plec] = dini_Int(string, "Plec");
Gracz[playerid][Skin] = dini_Int(string, "Skin");
Gracz[playerid][Prawko] = dini_Int(string, "Prawko");
Gracz[playerid][RangaAdmina] = dini_Int(string, "Admin");
Gracz[playerid][RangaVIP] = dini_Int(string, "VIP");
//mapojazd[playerid] = dini_Int(string, "mapojazd");
Gracz[playerid][Bank] = dini_Int(string, "Bank");
Gracz[playerid][wedkaz] = dini_Int(string, "wedkaz");
Gracz[playerid][glod] = dini_Int(string, "glod");
Gracz[playerid][raz] = dini_Int(string, "raz");
Gracz[playerid][zmeczenie] = dini_Int(string, "zmeczenie");
Gracz[playerid][gwiazdki] = dini_Int(string, "gwiazdki");
SetPlayerScore(playerid, dini_Int(string, "score"));
Gracz[playerid][Dostarczenia] = dini_Int(string, "Dostarczenia");
Gracz[playerid][maban] = dini_Int(string, "maban");
Gracz[playerid][warny] = dini_Int(string, "warny");
//
SetPlayerWantedLevel(playerid, Gracz[playerid][gwiazdki]);
wezglod();
return 1;
}
stock ZapiszGracza(playerid)
{
new string[500];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid, Gname, sizeof(Gname));
format(string, sizeof(string), "/DT/Gracze/%s.ini",Gname);
//
dini_IntSet(string, "Kasa", GetPlayerMoney(playerid));
dini_IntSet(string, "Plec", Gracz[playerid][Plec]);
dini_IntSet(string, "Skin", Gracz[playerid][Skin]);
dini_IntSet(string, "Prawko", Gracz[playerid][Prawko]);
dini_IntSet(string, "Admin", Gracz[playerid][RangaAdmina]);
dini_IntSet(string, "VIP", Gracz[playerid][RangaVIP]);
//dini_IntSet(string, "mapojazd", mapojazd[playerid]);
dini_IntSet(string, "Bank", Gracz[playerid][Bank]);
dini_IntSet(string, "wedkaz", Gracz[playerid][wedkaz]);
dini_IntSet(string, "glod", Gracz[playerid][glod]);
dini_IntSet(string, "raz", Gracz[playerid][raz]);
dini_IntSet(string, "zmeczenie", Gracz[playerid][zmeczenie]);
dini_IntSet(string, "gwiazdki", Gracz[playerid][gwiazdki]);
dini_IntSet(string, "score", GetPlayerScore(playerid));
dini_IntSet(string, "Dostarczenia", Gracz[playerid][Dostarczenia]);
dini_IntSet(string, "maban", Gracz[playerid][maban]);
dini_IntSet(string, "warny", Gracz[playerid][warny]);
//
return 1;
}
A tutaj wyzerowanie:
Kod: Gracz[playerid][Plec] = 0;
Gracz[playerid][Skin] = 44;
Gracz[playerid][Prawko] = 0;
Gracz[playerid][RangaAdmina] = 0;
Gracz[playerid][RangaVIP] = 0;
Gracz[playerid][Bank] = 0;
Gracz[playerid][wedkaz] = 0;
Gracz[playerid][glod] = 0;
Gracz[playerid][raz] = 0;
Gracz[playerid][zmeczenie] = 0;
Gracz[playerid][gwiazdki] = 0;
SetPlayerScore(playerid, 0);
Gracz[playerid][Dostarczenia] = 0;
Gracz[playerid][maban] = 0;
Gracz[playerid][warny] = 0;
Moglibyscie mnie jakos nakierowca jak to poprawic ? Zerwoanie mialem w onplayerconnect lecz tez bylo to samo ;c
Za kazda pomoc daje reputacje i piwo
Wysłany: 2015-02-15, 15:19
Intern
Wiek: 30 Na forum: 4184 dni Posty: 40
Nick w MP: Intern
Piwa : 15
zr?b sprzedawanie pojazdu za pomoc? OnDialogResponse.
Tam gdzie masz okno (przywo?aj, zmie? model itd) dodaj sprzedaj a w ondialogresponse zr?b input na kwot? i ID/nick gracza, kt?remu i za ile ma zosta? sprzedany pojazd.
(NIE PATRZY?EM W KOD, KT?RY PODA?E?)Uwa?am ?e lepiej to zrobi? w dialogu (bardziej optymalne)
Wysłany: 2015-02-15, 15:54
Avira15
Wiek: 33 Na forum: 4921 dni Posty: 34
Moglbys pokazac jak by to wygladalo w moim przypadku ?
Wysłany: 2015-02-15, 20:13
Intern
Wiek: 30 Na forum: 4184 dni Posty: 40
Nick w MP: Intern
Piwa : 15
Komenda ZCMD:
Kod: CMD:pojazd(playerid, params[])
{
if(Player[playerid][Have] == false) return SendClientMessage(playerid, COLOR_RED, "›› |Info| {FFFFFF}Nie posiadasz prywatnego pojazdu");
ShowPlayerDialog(playerid, DIALOG_PRIVCAR_MENU, DIALOG_STYLE_LIST, "Prywatny pojazd", "Przywo?aj pojazd\nZmie? model\nOtw?rz dla Graczy\nZamknij dla Graczy\n{FF0000}Sprzedaj Pojazd", "Wybierz", "Wyjd?");
return 1;
}
OnDialogResponse:
Kod: if(dialogid == DIALOG_PRIVCAR_MENU)
{
if(response)
{
new vehid = GetPlayerVehicleID(playerid);
switch(listitem)
{
case 0:
{
//cos
}
case 1:
{
//cos
}
case 2:
{
//cos
}
case 3:
{
DestroyVehicle(Player[playerid][CarID]);
Player[playerid][Have] = false;
Delete3DTextLabel(Text3D:vehicle3Dtext[Player[playerid][CarID]]);
new file[128];
format(file, 64, "/Privcars/%s.ini", PlayerName(playerid));
DOF2_RemoveFile(file);
SendClientMessage(playerid, COLOR_WHITE, "Sprzeda?e? prywatny pojazd.");
}
}
}
return 1;
}
Moda?em przyk?adowy kod, przer?b go sb, i wed?ug poradnika o Gui samp zr?b DIALOG_STYLE_INPUT sprzedawanie graczowi o id i kwocie.
Tagi: sprzedaz :: priv :: cars :: oraz :: reset :: kont
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: