Skripta koju koristim:cyber
Detaljan opis problema:Ovako to mi ne ide u glavu dakle radio sam dinamicno kreiranje stanova i vikendica tu sve super radi, problem je u kucama kreirao sam 198 kuca a stanova ima cetverostruko vise takoder i vikendica i ne lagga ni kad editujem lvl i cijenu niti kad kupujem , ali kada kupim kucu koju sam kreirao zallaga na dvadeset sekundi nista ne mozes onda pusti takoder i kad kupim kucu zallaga probao sam da vidim jel do kuca obrisao sam i ostavio 10 kuca i bude u redu dakle zasto mi stvara lag do cega moze biti tIO.Hvala
Dio skripte:
Neke slike/video za lakse dobivanje pomoci(neobavezno):
sve je u modu
molim vas znal netk.Hvala
koristis string pokusaj stavit npr umjesto string[256] na 128 ili 64
u redu do cega bi moglo jos da bude, ali pazi ovo sad ima kreiranih 198 kuca i obrisem sve kuce i ostavim recimo 15 kuca i onda radi sve ne lagga lijepo prodaj mogu editovat i kupovat ali kada vratim kuce na 198 onda kad idem edit kuce te ili prodat ili kupit ona zallaga
molim vas znali netko.Hvala
znali netko
ocito da spremas sve kuce kad kupis jednu...
daj dio skripte gdje kupis kucu i callback koji pozoves da spremi kuce...
ovo je di kupujem kucu
if(dialogid == kucadialog1)
{
if(response)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new h = 0; h < sizeof(KucaInfo); h++)
{
if(PlayerToPoint(2.0, playerid, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]) && KucaInfo[h][hOwned] == 0)
{
if(PlayerInfo[playerid][pLevel] < KucaInfo[h][hLevel])
{
format(string, sizeof(string), "Morate biti level %d da biste kupili ovo !", KucaInfo[h][hLevel]);
SendClientMessage(playerid, COLOR_GRAD5, string);
return 1;
}
if(PlayerInfo[playerid][pPhousekey] != 255 &&PlayerInfo[playerid][pPhousekey1] != 255 && strcmp(playername, KucaInfo[PlayerInfo[playerid][pPhousekey1]][hOwner], true) == 0 || strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, " Vec posjedujete kucu, kucajte /prodajkucu ako zelite da kupite ovu !");
return 1;
}
if(GetPlayerMoney(playerid) > KucaInfo[h][hValue])
{
PlayerInfo[playerid][pPhousekey1] = h;
KucaInfo[h][hOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(KucaInfo[h][hOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoney(playerid,-KucaInfo[h][hValue]);
SendClientMessage(playerid, ZELEENA, "(kuca) {FFFFFF}Cestitamo uspjesno ste kupili kucu.Za izlaz koristite /exit");
SendClientMessage(playerid, COLOR_WHITE, "Cestitamo vam na kupovini nove kuce! Sve informacija na /kuca.");
DestroyDynamicPickup(pickucica[h]);
pickucica[h] = CreateDynamicPickup(1239, 1, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]);
new result[500];
format(result,sizeof(result),"{0ed400}Vlasnik Kuce: {FFFFFF}%s\n{0ed400}Opis: {FFFFFF}%s\n{0ed400}Level: {FFFFFF}%d\n{0ed400}Rent: {FFFFFF}%d$\n{0ed400}Najam: {FFFFFF}/rentroom", KucaInfo[h][hOwner],KucaInfo[h][hDiscription],KucaInfo[h][hLevel], KucaInfo[h][hRent]);
UpdateDynamic3DTextLabelText(housesale[h], 0x00FFFFFF,result);
OnPlayerUpdate(playerid);
DateProp(playerid);
SaveKuce();
return 1;
}
else
{
SendClientMessage(playerid, SIVA, "{F81414}[Greska!] {C3C3C3}Nemas dovoljno novca!");
return 1;
}
}
}
}
}
return 1;
}
ovo je callback koji mi sprema kuce
stock SaveKuce()
{
new FileName[128];
for(new i = 0; i < 999; i++)
{
format(FileName, sizeof(FileName), "kuce/Kuca_%d.ini", i);
if(fexist(FileName) )
{
dini_FloatSet(FileName, "Entrancex", KucaInfo[i][hEntrancex]);
dini_FloatSet(FileName, "Entrancey", KucaInfo[i][hEntrancey]);
dini_FloatSet(FileName, "Entrancez", KucaInfo[i][hEntrancez]);
dini_FloatSet(FileName, "Exitx", KucaInfo[i][hExitx]);
dini_FloatSet(FileName, "Exity", KucaInfo[i][hExity]);
dini_FloatSet(FileName, "Exitz", KucaInfo[i][hExitz]);
dini_IntSet(FileName, "Healthx", KucaInfo[i][hHealthx]);
dini_IntSet(FileName, "Healthy", KucaInfo[i][hHealthy]);
dini_IntSet(FileName, "Healthz", KucaInfo[i][hHealthz]);
dini_IntSet(FileName, "Armourx", KucaInfo[i][hArmourx]);
dini_IntSet(FileName, "Armoury", KucaInfo[i][hArmoury]);
dini_IntSet(FileName, "Armourz", KucaInfo[i][hArmourz]);
dini_Set(FileName, "Owner", KucaInfo[i][hOwner]);
dini_Set(FileName, "Discription", KucaInfo[i][hDiscription]);
dini_IntSet(FileName, "Value", KucaInfo[i][hValue]);
dini_IntSet(FileName, "Hel", KucaInfo[i][hHel]);
dini_IntSet(FileName, "Arm", KucaInfo[i][hArm]);
dini_IntSet(FileName, "Int", KucaInfo[i][hInt]);
dini_IntSet(FileName, "Lock", KucaInfo[i][hLock]);
dini_IntSet(FileName, "Owned", KucaInfo[i][hOwned]);
dini_IntSet(FileName, "Rooms", KucaInfo[i][hRooms]);
dini_IntSet(FileName, "Rent", KucaInfo[i][hRent]);
dini_IntSet(FileName, "Rentabil", KucaInfo[i][hRentabil]);
dini_IntSet(FileName, "Takings", KucaInfo[i][hTakings]);
dini_IntSet(FileName, "Vec", KucaInfo[i][hVec]);
dini_IntSet(FileName, "Vcol1", KucaInfo[i][hVcol1]);
dini_IntSet(FileName, "Vcol2", KucaInfo[i][hVcol2]);
dini_IntSet(FileName, "Date", KucaInfo[i][hDate]);
dini_IntSet(FileName, "Level", KucaInfo[i][hLevel]);
dini_IntSet(FileName, "Neakt", KucaInfo[i][hNeakt]);
dini_IntSet(FileName, "Sef", KucaInfo[i][hSef]);
dini_IntSet(FileName, "Droga", KucaInfo[i][hDroga]);
dini_IntSet(FileName, "Matsi", KucaInfo[i][hMats]);
dini_IntSet(FileName, "Oruzje1", KucaInfo[i][Oruzje1]);
dini_IntSet(FileName, "Municija1", KucaInfo[i][Municija1]);
dini_IntSet(FileName, "Oruzje2", KucaInfo[i][Oruzje2]);
dini_IntSet(FileName, "Municija2", KucaInfo[i][Municija2]);
dini_IntSet(FileName, "Oruzje3", KucaInfo[i][Oruzje3]);
dini_IntSet(FileName, "Municija3", KucaInfo[i][Municija3]);
dini_IntSet(FileName, "Tip", KucaInfo[i][hTip]);
dini_IntSet(FileName, "VirtualWorld", KucaInfo[i][hVirtualWorld]);
dini_IntSet(FileName, "World", KucaInfo[i][hWorld]);
}
}
}
kako bih mogao to izvesti.Hvala
sabljak okani se vise timera... ti bi na sve timere stavljao...
@autor teme:
napravi callback s kojim ces spremit samo jednu kucu i onda pozoves spremanje kuce po id-u kad je kupi...
ne kuzim te bas mozes malo pojasniti, ako nije bed.Hvala
forward SpremiKucu(idkuce);
public SpremiKucu(idkuce) {
if(idkuce<0 || idkuce>sizeof(KucaInfo)) {
return 1;//da ne ide spremat nepostojeci id kuce
}
//kod za spremanje kuce, isti kao za sve osim sto izbacis for()... i umjesto "i" stavljas idkuce
}
dakle u onaj kod za dialog kupnju kao si vidio u navedenom stavljam
SpremiKucu(idkuce);
ili.
Citat: ivica158 poslato Mart 19, 2013, 13:49:13 POSLE PODNE
dakle u onaj kod za dialog kupnju kao si vidio u navedenom stavljam
SpremiKucu(idkuce);
ili.
ne, stavljas SpremiKucu(h); <- h ti u tom slucaju odredjuje id kuce koju si kupio
oce mi onda sejvat ono sto sam ubacio da sprema ako me shvacas za matse i to....?Hvala
Citatoce mi onda sejvat ono sto sam ubacio da sprema ako me shvacas za matse i to....?Hvala
a jesi trutina majke ti covijek ti sve servira na tanjur i ti i dalje ne kuzis...pa normalno ako spremas nesta za tu kucu spremice ono sta si i uradio,ako si stavio matse u kucu spremice matse samo za tu kucu nece spremat sve i jednu kucu na serveru bezpotrebno neznam sta ti tu opcne ima bit "nejasno" ?
dakle u taj public spremikucu tako stavljam kod onaj di mi sprema sve a to je savekuce?
ne kuzim samo ovo xD
//kod za spremanje kuce, isti kao za sve osim sto izbacis for()... i umjesto "i" stavljas idkuce
Hvala
Citat: ivica158 poslato Mart 19, 2013, 14:31:36 POSLE PODNE
ne kuzim samo ovo xD
//kod za spremanje kuce, isti kao za sve osim sto izbacis for()... i umjesto "i" stavljas idkuce
Hvala
pa tu stavis sad taj kod za spremanje kuce
SpremiKucu(idkuce);
ili
SpremiKucu(h);
neznam kak je kod tebe....
SaveKuce(); tako je kod mene i opet odem editat ili prodat kucu opet lagga
Citat: ivica158 poslato Mart 19, 2013, 15:07:59 POSLE PODNE
SaveKuce(); tako je kod mene i opet odem editat ili prodat kucu opet lagga
ajd ti daj cijeli kod od otog tvoga sta zelis neznam uopce o cemu se radi daj otu komandu koju koristis /kupikucu ili sta vec jer inace ti nemoze niko nista objasnit...
pogledaj prvi post
imam onda undefinen simbol h
Citat: Lenon poslato Mart 19, 2013, 16:29:53 POSLE PODNE
je li imas ovo tamo gdje ti kupuje kucu, tamo pod OnDialogResponse:
for(new h = 0; h < sizeof(KucaInfo); h++)
?
i ovo stavljas dolje na kraj te funkcije za kupovinu kuce pod OnDialogResponse:
SaveKuce(h);
i jesi li uradio ovo sto je Dude rekao:
forward SpremiKucu(idkuce);
public SpremiKucu(idkuce) {
if(idkuce<0 || idkuce>sizeof(KucaInfo)) {
return 1;//da ne ide spremat nepostojeci id kuce
}
//kod za spremanje kuce, isti kao za sve osim sto izbacis for()... i umjesto "i" stavljas idkuce
}
?
imam ali je i dakle da umjesto i stavim na h?
i ovdje u spremikucu public
ovo
//kod za spremanje kuce, isti kao za sve osim sto izbacis for()... i umjesto "i" stavljas idkuce
dakle tu stavljam ovo onaj stock di sprema kuce il sta
stock mi ide SaveKuce();
nezz dal mogu ovako ali kad dodem do kuce pojavi se dialog ali napomijenm nisam nista dirao tuda jucer je rdilo sve i ja stisnem u dialogu na kupikucu nista se ne desava?
OnDialogResponse si mrdao :)
nisam bro kazem :) nezz evo pokusavam ali opet nista dodem pred kucu da stisnem dialog da kupi i nista se ne desava ?
evo ondialogresponse
if(dialogid == kucadialog1)
{
if(response)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new h = 0; h < sizeof(KucaInfo); h++)
{
if(PlayerToPoint(2.0, playerid, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]) && KucaInfo[h][hOwned] == 0)
{
if(PlayerInfo[playerid][pLevel] < KucaInfo[h][hLevel])
{
format(string, sizeof(string), "Morate biti level %d da biste kupili ovo !", KucaInfo[h][hLevel]);
SendClientMessage(playerid, COLOR_GRAD5, string);
return 1;
}
if(PlayerInfo[playerid][pPhousekey] != 255 && PlayerInfo[playerid][pPhousekey1] != 255 && strcmp(playername, KucaInfo[PlayerInfo[playerid][pPhousekey1]][hOwner], true) == 0 || strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, " Vec posjedujete kucu, kucajte /prodajkucu ako zelite da kupite ovu !");
return 1;
}
if(GetPlayerMoney(playerid) > KucaInfo[h][hValue])
{
PlayerInfo[playerid][pPhousekey1] = h;
KucaInfo[h][hOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(KucaInfo[h][hOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoney(playerid,-KucaInfo[h][hValue]);
SendClientMessage(playerid, ZELEENA, "(kuca) {FFFFFF}Cestitamo uspjesno ste kupili kucu.Za izlaz koristite /exit");
SendClientMessage(playerid, COLOR_WHITE, "Cestitamo vam na kupovini nove kuce! Sve informacija na /kuca.");
DestroyDynamicPickup(pickucica[h]);
pickucica[h] = CreateDynamicPickup(1239, 1, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]);
new result[500];
format(result,sizeof(result),"{0ed400}Vlasnik Kuce: {FFFFFF}%s\n{0ed400}Opis: {FFFFFF}%s\n{0ed400}Level: {FFFFFF}%d\n{0ed400}Rent: {FFFFFF}%d$\n{0ed400}Najam: {FFFFFF}/rentroom", KucaInfo[h][hOwner],KucaInfo[h][hDiscription],KucaInfo[h][hLevel], KucaInfo[h][hRent]);
UpdateDynamic3DTextLabelText(housesale[h], 0x00FFFFFF,result);
OnPlayerUpdate(playerid);
DateProp(playerid);
SpremiKucu(h);
return 1;
}
else
{
SendClientMessage(playerid, SIVA, "{F81414}[Greska!] {C3C3C3}Nemas dovoljno novca!");
return 1;
}
}
}
}
}
return 1;
}
probao sam da si dam lvl 18 i na kucu sam stavio lvl 50 i idem kupit kucu pise da treba lvl 50 da kupim kucu i oke dam si lvl i odem kupit i nista evo ondialogresponse
if(dialogid == kucadialog1)
{
if(response)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new h = 0; h < sizeof(KucaInfo); h++)
{
if(PlayerToPoint(2.0, playerid, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]) && KucaInfo[h][hOwned] == 0)
{
if(PlayerInfo[playerid][pLevel] < KucaInfo[h][hLevel])
{
format(string, sizeof(string), "Morate biti level %d da biste kupili ovo !", KucaInfo[h][hLevel]);
SendClientMessage(playerid, COLOR_GRAD5, string);
return 1;
}
if(PlayerInfo[playerid][pPhousekey] != 255 && PlayerInfo[playerid][pPhousekey1] != 255 && strcmp(playername, KucaInfo[PlayerInfo[playerid][pPhousekey1]][hOwner], true) == 0 || strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, " Vec posjedujete kucu, kucajte /prodajkucu ako zelite da kupite ovu !");
return 1;
}
if(GetPlayerMoney(playerid) > KucaInfo[h][hValue])
{
PlayerInfo[playerid][pPhousekey1] = h;
KucaInfo[h][hOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(KucaInfo[h][hOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoney(playerid,-KucaInfo[h][hValue]);
SendClientMessage(playerid, ZELEENA, "(kuca) {FFFFFF}Cestitamo uspjesno ste kupili kucu.Za izlaz koristite /exit");
SendClientMessage(playerid, COLOR_WHITE, "Cestitamo vam na kupovini nove kuce! Sve informacija na /kuca.");
DestroyDynamicPickup(pickucica[h]);
pickucica[h] = CreateDynamicPickup(1239, 1, KucaInfo[h][hEntrancex], KucaInfo[h][hEntrancey], KucaInfo[h][hEntrancez]);
new result[500];
format(result,sizeof(result),"{0ed400}Vlasnik Kuce: {FFFFFF}%s\n{0ed400}Opis: {FFFFFF}%s\n{0ed400}Level: {FFFFFF}%d\n{0ed400}Rent: {FFFFFF}%d$\n{0ed400}Najam: {FFFFFF}/rentroom", KucaInfo[h][hOwner],KucaInfo[h][hDiscription],KucaInfo[h][hLevel], KucaInfo[h][hRent]);
UpdateDynamic3DTextLabelText(housesale[h], 0x00FFFFFF,result);
OnPlayerUpdate(playerid);
DateProp(playerid);
SpremiKucu(h);
return 1;
}
else
{
SendClientMessage(playerid, SIVA, "{F81414}[Greska!] {C3C3C3}Nemas dovoljno novca!");
return 1;
}
}
}
}
}
return 1;
}
nista bro opet isto dodem kod kuce izade dialog stisnem kupi i nista se ne desava