Kodisanje ORG sistema i Gate sistema


Započeo Andreus, Avgust 08, 2023, 11:28:18 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pozz, ja sam jedan od pocetnih skriptera koji radi svoju skriptu i planira poceti svoj mali server ali imam probleme. Posto sam odnegde morao nauciti po nesto o skriptanju pratio sam tutorijal od youtubera TazGee i primetio sam od toga sto mi vecina koda uspeva neki videi znaju biti uspesni ali da nemam nikakog effecta radnje.
Kao sto je i naslov od njega sam napravio i prepisao njegov dinamicni kod za pravljenje organizacije ali loigcno iz nekog razloga kada unesem sve kako je i on napravio njemu se napravi i spawna dok u mene dode prvi dialog da napravim ime org i onda pri klikom na bilo koje dugme (Enter, Potvrdi, Odustani i sl.) dialog ce se samo prekinuti, tj. nece prikazati druge dialoge i samo ce se spawnati moj odabrani pickup i celi server ce tu stajati sve dok ne restartujem server. cak i nece nista sacuvati u scriptfiles.
Takode i za Dinamicni Gate sistem sto je pravio u mene isto vecina radi imaju oni points (X, Y, Z) Ali kada kliknem da sacuvam gate se zapravo sacuve po ID-jem i svacim ali na mapi i bilo gde gate ne postoji, cak i kada klikcem dugme C/H nema nikakve poruke.
Ukoliko znate bolji kod ili fix javite se!

Evo poslacu kod gde sam celi org sistem zapisao
enum orgInfo
{
	orgIme[128],
	orgLeader[128],
	orgMember1[128],
	orgMember2[128],
	orgMember3[128],
	orgMember4[128],
	orgMember5[128],
	orgMember6[128],
	orgMember7[128],
	orgMember8[128],
	orgMember9[128],
	orgMember10[128],
	orgMember11[128],
	orgMember12[128],
	orgMember13[128],
	orgMember14[128],
	orgMember15[128],
	orgMember16[128],
	orgMember17[128],
	orgMember18[128],
	orgMember19[128],
	orgMember20[128],
	orgSefPare,
	orgSefMats,
	orgSefDroga,
	orgDrzavna,
	orgRank1[128],
	orgRank2[128],
	orgRank3[128],
	orgRank4[128],
	orgRank5[128],
	orgRank6[128],
	orgRank7[128],
	Float:orgX,
	Float:orgY,
	Float:orgZ
};
new OrgInfo[MAX_ORGS][orgInfo];
new brojorg;


stock NewOrg(const len)
{
	new orgid = -1;
	for(new loop = (0), org_check = (-1), Data_[64] = "\0"; loop != len; ++ loop)
	{
	    org_check = (loop+1);
		format(Data_, sizeof(Data_), ORGPATH, org_check);
		if(!fexist(Data_))
		{
		    orgid = (org_check);
		    break;
		}
	}
	return orgid;
}

stock SaveOrg(id)
{
	new org_file[64];
	format(org_file, sizeof(org_file), ORGPATH, id);
	new INI:File = INI_Open(org_file);
	INI_WriteString(File, "Ime", OrgInfo[id][orgIme]);
	INI_WriteString(File, "Leader", OrgInfo[id][orgLeader]);
	INI_WriteString(File, "Member1", OrgInfo[id][orgMember1]);
	INI_WriteString(File, "Member2", OrgInfo[id][orgMember2]);
	INI_WriteString(File, "Member3", OrgInfo[id][orgMember3]);
	INI_WriteString(File, "Member4", OrgInfo[id][orgMember4]);
	INI_WriteString(File, "Member5", OrgInfo[id][orgMember5]);
	INI_WriteString(File, "Member6", OrgInfo[id][orgMember6]);
	INI_WriteString(File, "Member7", OrgInfo[id][orgMember7]);
	INI_WriteString(File, "Member8", OrgInfo[id][orgMember8]);
	INI_WriteString(File, "Member9", OrgInfo[id][orgMember9]);
	INI_WriteString(File, "Member10", OrgInfo[id][orgMember10]);
	INI_WriteString(File, "Member11", OrgInfo[id][orgMember11]);
	INI_WriteString(File, "Member12", OrgInfo[id][orgMember12]);
	INI_WriteString(File, "Member13", OrgInfo[id][orgMember13]);
	INI_WriteString(File, "Member14", OrgInfo[id][orgMember14]);
	INI_WriteString(File, "Member15", OrgInfo[id][orgMember15]);
	INI_WriteString(File, "Member16", OrgInfo[id][orgMember16]);
	INI_WriteString(File, "Member17", OrgInfo[id][orgMember17]);
	INI_WriteString(File, "Member18", OrgInfo[id][orgMember18]);
	INI_WriteString(File, "Member19", OrgInfo[id][orgMember19]);
	INI_WriteString(File, "Member20", OrgInfo[id][orgMember20]);
	INI_WriteInt(File, "SefPare", OrgInfo[id][orgSefPare]);
	INI_WriteInt(File, "SefMats", OrgInfo[id][orgSefMats]);
	INI_WriteInt(File, "SefDroga", OrgInfo[id][orgSefDroga]);
	INI_WriteInt(File, "Drzavna", OrgInfo[id][orgDrzavna]);
	INI_WriteString(File, "Rank1", OrgInfo[id][orgRank1]);
	INI_WriteString(File, "Rank2", OrgInfo[id][orgRank2]);
	INI_WriteString(File, "Rank3", OrgInfo[id][orgRank3]);
	INI_WriteString(File, "Rank4", OrgInfo[id][orgRank4]);
	INI_WriteString(File, "Rank5", OrgInfo[id][orgRank5]);
	INI_WriteString(File, "Rank6", OrgInfo[id][orgRank6]);
	INI_WriteString(File, "Rank7", OrgInfo[id][orgRank7]);
	INI_WriteFloat(File, "X", OrgInfo[id][orgX]);
	INI_WriteFloat(File, "Y", OrgInfo[id][orgY]);
	INI_WriteFloat(File, "Z", OrgInfo[id][orgZ]);
	INI_Close(File);

}


//ORG SISTEM
	for(new i = 0; i < MAX_ORGS; i++)
	{
	    new orgfile[64];
	    format(orgfile, sizeof(orgfile), ORGPATH, i);
     	if(fexist(orgfile))
      	{
       		INI_ParseFile(orgfile, "LoadOrgs", .bExtra = true, .extra = i);
         	new string[128];
          	format(string, sizeof(string), "{DAA520}[{FFFFFF}%s{DAA520}]\n{FFFFFF}Leader: {DAA520}%s", OrgInfo[i][orgIme], OrgInfo[i][orgLeader]);
           	orgLabel[i] = Create3DTextLabel(string, COLOR_BLACK, OrgInfo[i][orgX], OrgInfo[i][orgY], OrgInfo[i][orgZ], 20.0, 0, 0);
            orgPickup[i] = CreatePickup(19132, 1, OrgInfo[i][orgX], OrgInfo[i][orgY], OrgInfo[i][orgZ]);
            brojorg++;
      	}
	}


public OnGameModeExit()
{
    for(new id = 0; id < MAX_HOUSES; id ++)
	{
		SaveHouse(id);
	}
	for(new id = 0; id < MAX_ORGS; id++)
	{
	    SaveOrg(id);
	}
	return 1;
}



Komande
CMD:skinilidera(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 4) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Niste ovlasceni za upotrebu ove komande!");
    new id, orgfile[128], pid, pfile[128], niko[128], poruka[128], adm[128];
    if(sscanf(params, "i", id)) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}/skinilidera [id]");
    format(orgfile, sizeof(orgfile), ORGPATH, id);
    format(niko, sizeof(niko), "Niko");
    if(!fexist(orgfile)) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Ova organizacija se ne uklapa sa nasom bazom podataka!");
    pid = GetPlayerID(OrgInfo[id][orgLeader]);
    if(pid == -1)
    {
        new ime[128];
        format(ime, sizeof(ime), PATH, OrgInfo[id][orgLeader]);
        format(pfile, sizeof(pfile), PATH, ime);
        INI_ParseFile(pfile, "LoadIser_%s", .bExtra = true, .extra = SKIDANJEID);
        PlayerInfo[SKIDANJEID][pLeader] = 0;
        OrgInfo[id][orgLeader] = niko;
        RefreshEntity(id, 2);
        Sacuvaj(SKIDANJEID, ime);
        SaveOrg(id);
    }
    else
    {
        PlayerInfo[pid][pLeader] = 0;
        OrgInfo[id][orgLeader] = niko;
        GetPlayerName(playerid, adm, sizeof(adm));
        format(poruka, sizeof(poruka), "{DAA520}LEADER: {FFFFFF}Skinut vam je lider rank organizacije {DAA520}%s {FFFFFF}od strane admina {DAA520}%s!", OrgInfo[id][orgIme], adm);
        RefreshEntity(id, 2);
        SavePlayer(pid);
        SaveOrg(id);
    }
    format(poruka, sizeof(poruka), "{DAA520}SERVER: {FFFFFF}Uspesno ste skinuli lidera organizacije {DAA520}%s sa vlasti!", OrgInfo[id][orgIme]);
    SCM(playerid, -1, poruka);
	return 1;
}


CMD:organizacije(playerid, params[])
{
	new lista[1024], text[128];
	if(brojorg < 1) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Organizacije nisu jos napravljene!");
	for(new i = 1; i <= brojorg; i++)
	{
	    format(text, sizeof(text), "{DAA520}[{FFFFFF}%d{DAA520}] - {FFFFFF}%s\n", i, OrgInfo[i][orgIme]);
	    strcat(lista, text);
	}
	ShowPlayerDialog(playerid, DIALOG_ORGLIST, DIALOG_STYLE_MSGBOX, "{DAA520}Lista Organizacija", lista, "{DAA520}Napusti", "");
	return 1;
}


CMD:lideri(playerid, params[])
{
	new lista[2048], text[128];
	if(brojorg < 1) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Organizacije nisu jos napravljene!");
	for(new i = 0; i <= brojorg; i++)
	{
	    format(text, sizeof(text), "{DAA520}[{FFFFFF}%d{DAA520}] - {DAA520}Ime:%s - {DAA520}Leader: {FFFFFF}%s\n", i, OrgInfo[i][orgIme], OrgInfo[i][orgLeader]);
	    strcat(lista, text);
	}
	ShowPlayerDialog(playerid, DIALOG_ORGLIST, DIALOG_STYLE_MSGBOX, "{DAA520}Lista Lidera", lista, "{DAA520}Napusti", "");
	return 1;
}
CMD:makeleader(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < 4) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Niste ovlasceni za upotrebu ove komande!");
	if(brojorg < 1) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Organizacije nisu jos napravljene!");
	new id, orgid, ime[128], string[128];
	if(sscanf(params, "ui", id, orgid)) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}/makeleader [id] [orgid]");
	if(PlayerInfo[id][pLeader] != 0) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Igrac je vec lider neke druge organizacije!");
	if(orgid < 0 || orgid > brojorg) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Netacan ID organizacije je unjet!");
	GetPlayerName(id, ime, sizeof(ime));
	PlayerInfo[id][pLeader] = orgid;
	OrgInfo[orgid][orgLeader] = ime;
	SavePlayer(id);
	SaveOrg(orgid);
	format(string, sizeof(string), "{DAA520}ORGANIZACIJA: {FFFFFF}Uspesno ste postavili lidera organizacije {DAA520}%s{FFFFFF} igracu {DAA520}%s!", OrgInfo[orgid][orgIme], ime);
	SCM(playerid, -1, string);
	Delete3DTextLabel(orgLabel[orgid]);
	format(string, sizeof(string), "{DAA520}[{FFFFFF}%s{DAA520}]\n{FFFFFF}Leader: {DAA520}%s", OrgInfo[orgid][orgIme], OrgInfo[orgid][orgLeader]);
	orgLabel[orgid] = Create3DTextLabel(string, COLOR_BLACK, OrgInfo[orgid][orgX], OrgInfo[orgid][orgY], OrgInfo[orgid][orgZ], 20.0, 0, 0);
	return 1;
}


Najbitnije

CMD:napraviorg(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < 6) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Niste ovlasceni za upotrebu ove komande!");
	if(editaorg[playerid] != -1) return SCM(playerid, COLOR_RED, "SERVER: {FFFFFF}Vec pravite/uredujete neku org!");
	new Float:X, Float:Y, Float:Z, i = NewOrg(MAX_ORGS), nikostring[128];
	format(nikostring, sizeof(nikostring), "Niko");
	OrgInfo[i][orgLeader] = nikostring;
	OrgInfo[i][orgMember1] = nikostring;
	OrgInfo[i][orgMember2] = nikostring;
	OrgInfo[i][orgMember3] = nikostring;
	OrgInfo[i][orgMember4] = nikostring;
	OrgInfo[i][orgMember5] = nikostring;
	OrgInfo[i][orgMember6] = nikostring;
	OrgInfo[i][orgMember7] = nikostring;
	OrgInfo[i][orgMember8] = nikostring;
	OrgInfo[i][orgMember9] = nikostring;
	OrgInfo[i][orgMember10] = nikostring;
	OrgInfo[i][orgMember11] = nikostring;
	OrgInfo[i][orgMember12] = nikostring;
	OrgInfo[i][orgMember13] = nikostring;
	OrgInfo[i][orgMember14] = nikostring;
	OrgInfo[i][orgMember15] = nikostring;
	OrgInfo[i][orgMember16] = nikostring;
	OrgInfo[i][orgMember17] = nikostring;
	OrgInfo[i][orgMember18] = nikostring;
	OrgInfo[i][orgMember19] = nikostring;
	OrgInfo[i][orgMember20] = nikostring;
	OrgInfo[i][orgSefPare] = 0;
	OrgInfo[i][orgSefMats] = 0;
	OrgInfo[i][orgSefDroga] = 0;
	GetPlayerPos(playerid, X, Y, Z);
	OrgInfo[i][orgX] = X;
	OrgInfo[i][orgY] = Y;
	OrgInfo[i][orgZ] = Z;
	orgPickup[i] = CreatePickup(19132, 1, X, Y, Z);
	SCM(playerid, COLOR_ORANGE, "ORGANIZACIJA: {FFFFFF}Uspesno ste poceli sa pravljenjem organizacije!");
	ShowPlayerDialog(playerid, DIALOG_ORGIME, DIALOG_STYLE_INPUT, "{DAA520}Ime Organizacije", "{FFFFFF}Unestie vase zeljno ime organizacije!", "Potvrdi", "Odustani");
	brojorg++;
	return 1;
}


Sada Dialozi

case DIALOG_ORGIME:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new ime[128];
		        format(ime, sizeof(ime), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgIme] = ime;
		        ShowPlayerDialog(playerid, DIALOG_ORGDRZAVNA, DIALOG_STYLE_MSGBOX, "{DAA520}Vrsta organizacije", "{FFFFFF}Izaberite vasu vrstu organizacije!", "Drzavna", "Nelegalna");
		    }
		}
		case DIALOG_ORGDRZAVNA:
		{
		    if(!response)
		    {
		        OrgInfo[editaorg[playerid]][orgDrzavna] = 0;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK1, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 1", "Potvrdi", "Odustani");
		    }
		    if(response)
		    {
		        OrgInfo[editaorg[playerid]][orgDrzavna] = 1;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK1, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 1", "Potvrdi", "Odustani");
		    }
		}
		case DIALOG_ORGRANK1:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank1] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK2, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 2", "Potvrdi", "Odustani");
		    }
		}
		case DIALOG_ORGRANK2:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank2] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK3, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 3", "Potvrdi", "Odustani");
		    }
		}
		case DIALOG_ORGRANK3:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank3] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK4, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 4", "Potvrdi", "Odustani");
		    }
		}
		case DIALOG_ORGRANK4:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank4] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK5, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 5", "Potvrdi", "Odustani");
		    }
		}
		case DIALOG_ORGRANK5:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank5] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK6, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 6", "Potvrdi", "Odsutani");
		    }
		}
		case DIALOG_ORGRANK6:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128];
		        format(string, sizeof(string), "%s", inputtext);
		        OrgInfo[editaorg[playerid]][orgRank6] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGRANK7, DIALOG_STYLE_INPUT, "{DAA520}Imena Rankova", "{FFFFFF}Unesite ime za Rank 7", "Potvrid", "Odustani");
		    }
		}
		case DIALOG_ORGRANK7:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new string[128], infostring[512], drz[128], i = editaorg[playerid];
		        if(OrgInfo[i][orgDrzavna] == 0)
		        {
		            format(drz, sizeof(drz), "Nelegalna");
		        }
		        else
		        {
		            format(drz, sizeof(drz), "Drzavna");
		        }
		        format(string, sizeof(string), "%s", inputtext);
		        format(infostring, sizeof(infostring), "{DAA520}Da li ste sigurni da zelite da napravite organizaciju?\n{FFFFFF}Ime: {DAA520}%s\n{FFFFFF}Vrsta: {DAA520}%s", OrgInfo[i][orgIme], drz);
		        OrgInfo[editaorg[playerid]][orgRank7] = string;
		        ShowPlayerDialog(playerid, DIALOG_ORGDRZAVNA, DIALOG_STYLE_MSGBOX, "{DAA520}Potvrda", infostring, "Potvrid", "Odustani");
		    }
		}
		case DIALOG_ORGINFO:
		{
		    if(!response)
		    {
		        DestroyPickup(orgPickup[editaorg[playerid]]);
		        SCM(playerid, COLOR_RED, "{DAA520}SERVER: {FFFFFF}Prekinuli ste pravljenje organizacije!");
		        editaorg[playerid] = -1;
		    }
		    if(response)
		    {
		        new i = editaorg[playerid], string[128];
		        SCM(playerid, COLOR_ORANGE, "{DAA520}ORGANIZACIJA: {FFFFFF}Uspesno ste napravili organizaciju!");
		        SaveOrg(i);
          		format(string, sizeof(string), "{DAA520}[{FFFFFF}%s{DAA520}]\n{FFFFFF}Leader: {DAA520}%s", OrgInfo[i][orgIme], OrgInfo[i][orgLeader]);
           		orgLabel[i] = Create3DTextLabel(string, COLOR_BLACK, OrgInfo[i][orgX], OrgInfo[i][orgY], OrgInfo[i][orgZ], 20.0, 0, 0);
           		editaorg[playerid] = -1;
		    }
		}


Ukoliko neko zna sta sam zabrljao ili u cemu je bug neka posalje odgovor!