Gut alles klar danke
Beiträge von MarlboroMann
-
-
Hey,
ich wollte mal Fragen wie ich bei Enums was subtrahieren kann.
Bin bis jetzt dini gewönnt da weiß ich, SetPVarInt(playerid,"Pups",GetPVarInt(playerid,"Pups")-1));.
Aber wie das bei Enums geht weiß ich echt nicht :O -
Jeffry.......
du hast es mal wieder geschaft!
ES FUNKTIONIERTDanke danke danke
-
Ok alles klar.
Sorry das ich so nervGebiete speichern aber immer noch nicht..
codes:
Stock Laden und Speichern
Spoiler anzeigen stock GebieteLaden()
{
new str[32];
for(new i=0; i<sizeof(Gebiete); i++)
{
format(str, sizeof(str), "BesitzerGF%d", i);
Gebiete[i][GFBesitzer] = dini_Int("/GebietDatei/GebietDatei.ini",str);
}
return 1;
}Spoiler anzeigen stock GebieteSpeichern()
{
new str[32];
for(new i=0; i<sizeof(Gebiete); i++)
{
format(str, sizeof(str), "BesitzerGF%d", i);
dini_IntSet("/GebietDatei/GebietDatei.ini",str,Gebiete[i][GFBesitzer]);
}
return 1;
}OnGameModExit
Spoiler anzeigen public OnGameModeExit()
{
GebieteSpeichern();
return 1;
}OnGameModInit
Spoiler anzeigen public OnGameModInit()
{
GebieteLaden();
return 1;
}ocmd:gmx
Spoiler anzeigen ocmd:gmx(playerid,params)
{
if(GetPVarInt(playerid,"Admin")==5)
{
GebieteSpeichern();
SpielerSpeichern(playerid);
SendRconCommand("gmx");
}
return 1;
}Bild der erstellten Datei:
-
Okay das habe ich noch nicht gemacht.
Nur mal so eine Frage für die Verständnis:
Bsp beim Speicher Stock der Gebiete:
format(str, sizeof(str), "BesitzerGF%d", i);
dini_IntSet("/GebietDatei/GebietDatei.ini",str,Gebiete[i][GFBesitzer]);Beim Speicher Stock der Accounts:
format(Accounts,sizeof(Accounts),"/AccountsOLD/%s.ini",SpielerName(playerid));
dini_IntSet(Accounts,"Score",GetPlayerScore(playerid));Hast du den Unterschied gesehen?
Beim Account habe ich den Pfad bei der Zeile mit format.
Beim GangFight habe den Pfad bei der Zeile mit dini_IntSet.Ist das normal?
-
So :),
habe es so gemacht wie du es mir hier geschrieben hast.
Habe das Gebiet angegriffen und der Besitzer hat sich geändert.
Habe darauf hin dann ein GMX gemacht, jedoch ist wenn der Server wieder online ist der Besitzer wieder 0.
Habe dann in die ini Datei geguckt die ich erstellt habe in dem Pfad den du bei den Stocks angegeben hast, dieser ist jedoch
komplett leer..Muss ich nicht noch wie bei meinen Account so eine Art Register Stock machen?
Das heißt wo ich die Datei erst erstellen lasse? -
1. Die Komma Fehler habe ich schon rausgemacht, trotzdem vielen dank.
2. Als Fraktion ID würde schon vollkommen reichen. -
Okay Jeffry der Meister hat geantwortet, nun kann es nur Bug Frei werden
Habe die Koordinaten nun geändert, jetzt habe ich aber noch ein Problem.
Und zwar haben die Gebiete nun keine Besitzer und ich kann sie auch nicht ändern weil ich nicht weiß wie ich die Besitzer speichern lassen kann.. -
Danke erstmal das mir noch jemand helfen will, jedoch ist dein gesendeter Code der selbe wie ich ihn schon benutze..
Kennt sich hier echt niemand mit GangFight Systemen aus?
Würde mich wundern, da es ja in fast jedem Script drin ist -
@FerienFreak
jo, ist mir nicht aufgefallen, wollte es erst nur den jeweiligen Fraktionen schicken, habe mir aber dann gedacht,neeeee und die Schleife ausversehen drin gelassen.
DankeDie Abfrage habe ich nun geändern, keine Veränderung.
Mein Enum:
enum gebiet
{
GFBesitzer,
Float:MinX,
Float:MinY,
Float:MaxX,
Float:MaxY,
gOn,
GFAngreifer,
ScoreBesitzer,
ScoreAngreifer
};Die Funktion:
stock IsPlayerInGebiet(playerid)
{
for(new i;i<sizeof(Gebiete);i++)
{
new Float:GetX,Float:GetY,Float:GetZ;
GetPlayerPos(playerid,GetX,GetY,GetZ);
//if(Gebiete[i][MinX] < GetX && Gebiete[i][MaxX] > GetX && Gebiete[i][MinY] < GetY && Gebiete[i][MaxY] > GetY)
if(GetX >= Gebiete[i][MinX] && GetX <= Gebiete[i][MaxX] && GetY >= Gebiete[i][MinY] && GetY <= Gebiete[i][MaxY])
{
return i;
}
}
return -1;
}Anwendung der Funktion bei OnPlayerDeath
Spoiler anzeigen if(IsPlayerInGebiet(playerid) > -1)
{
new kill1[100],kill2[100];
new zone = IsPlayerInGebiet(playerid);
if(Gebiete[zone][gOn] == 1)
{
if(GetPVarInt(playerid,"Fraktion")==Gebiete[zone][GFBesitzer])
{
if(GetPVarInt(killerid,"Fraktion")==Gebiete[zone][GFAngreifer])
{
Gebiete[zone][GFAngreifer] ++;
format(kill1,sizeof(kill1),"%s hat %s im GangFight getötet.",SpielerName(killerid),SpielerName(playerid));
SendClientMessageToAll(tuerkis,kill1);
}
}
if(GetPVarInt(playerid,"Fraktion")==Gebiete[zone][GFAngreifer])
{
if(GetPVarInt(killerid,"Fraktion")==Gebiete[zone][GFBesitzer])
{
Gebiete[zone][GFBesitzer] ++;
format(kill2,sizeof(kill2),"%s hat %s im GangFight getötet.",SpielerName(killerid),SpielerName(playerid));
SendClientMessageToAll(tuerkis,kill2);
}
}
}
} -
Fehler ist immer noch da.
Ich steh im GangFight und es kommt die Nachricht, "Bis in keinem..."
Ha 7 Leute im Theard alle wissen nicht weiter -
Hey,
ich habe eben ein mit einem Tutorial ein GF System geschrieben aber die Abfrage ob der Spieler in einem GangFight ist funktioniert nicht.
Egal wo ich bin ich bekomme immer die Nachricht du bist nicht im GangFight Gebiet.
Habe es bei allen 5 probiert..Stock
stock IsPlayerInGebiet(playerid)
{
for(new i;i<sizeof(Gebiete);i++)
{
new Float:GetX,Float:GetY,Float:GetZ;
GetPlayerPos(playerid,GetX,GetY,GetZ);
if(Gebiete[i][MinX] < GetX && Gebiete[i][MaxX] > GetX && Gebiete[i][MinY] < GetY && Gebiete[i][MaxY] > GetY)
{
return i;
}
return -1;
}
return -1;
}Ocmd:
ocmd:gangfight(playerid,params[])
{
if(GetPVarInt(playerid,"Fraktion")==2 || GetPVarInt(playerid,"Fraktion")==3)
{
if(GetPVarInt(playerid,"FrakRang")>4)
{
if(IsPlayerInGebiet(playerid) > -1)
{
new zone = IsPlayerInGebiet(playerid);
if(Gebiete[zone][gOn] == 1) return SendClientMessage(playerid,rot,"Das Gebiet wird gerade schon angegriffen.");
if(Gebiete[zone][GFBesitzer] == GetPVarInt(playerid,"Fraktion"))return SendClientMessage(playerid,rot,"....);
Gebiete[zone][GFAngreifer] = GetPVarInt(playerid,"Fraktion");
Gebiete[zone][gOn] = 1;
SetTimerEx("GangFight",10000,0,"i",zone);
for(new i; i<MAX_PLAYERS; i++)
{
SendClientMessage(i,tuerkis,"Es wurde ein GangFight gestartet.");
SendClientMessage(i,tuerkis,"Haltet euch bitte fern, wenn ihr damit nichts zutun habt.");
}
}
else
{
SendClientMessage(playerid,rot,"Du bist in keinem GangFight Gebiet.");
}
}
else
{
SendClientMessage(playerid,rot,"Dein Rang ist zu niedrig um ein GangFight zu starten.");
}
}
else
{
SendClientMessage(playerid,rot,"Deine Fraktion ist keine Gang.");
}
return 1;
}Gebiete:
new Gebiet[5];
new Gebiete[5][gebiet] = {
{GFBesitzer,-729.0828,2784.1543,-897.4752,2731.4478},
{GFBesitzer,-1266.7142,2561.9902,-1337.7583,2440.3684},
{GFBesitzer,-617.7786,1422.2673,-885.5745,1621.0100},
{GFBesitzer,109.6944,1485.1274,289.1925,1335.6724},
{GFBesitzer,487.0500,2651.3181,63.0710,2386.9675}
}; -
Alles klar ich danke dir
-
Danke dir Jeffry,
ich werd es mal versuchen.
Habe nur noch die Frage wenn ich strval(inputtext) Abfrage, sorgt dies auch dafür das man nur Zahlen eingeben kann?
Also das Buchstaben einfach nicht akzeptiert werden? -
Heyyo,
habe eine SaveBox versucht zuscripten und da soll man bei dem Befehl /savebox ein Dialog bekommen, wo man auswählen kann was man lagern bzw rausnehmen kann. Und danach wenn man dies ausgewählt hat soll ein InPut Dialog kommen.
Soweit funktioniert das auch jedoch wenn ich dort was eingeben schließt der Dialog einfach ohne irgendwas zu machen.Befehl:
ocmd:savebox(playerid,params)
{
if(IsPlayerInRangeOfPoint(playerid,5,-348.20001, 2771.3999, 91.4) | IsPlayerInRangeOfPoint(playerid,5,-1316.1, 2319.5, 128.60001))
{
ShowPlayerDialog(playerid,DIALOG_SAVEBOX1,DIALOG_STYLE_LIST,"Was willst du reinlegen/rauslegen?","Drogen","Weiter","Abbrechen");
}
return 1;
}Dialoge:
if(dialogid==DIALOG_SAVEBOX1)
{
if(response==0)
{
}
if(response==1)
{
if(listitem==0)
{
new string1[200];
format(string1,sizeof(string1),"Du hast %i Drogen dabei und %i in der SaveBox.",GetPVarInt(playerid,"Drogen"),GetPVarInt(playerid,"SBDrogen"));
ShowPlayerDialog(playerid,DIALOG_SAVEBOX2,DIALOG_STYLE_INPUT,"Wie viele Drogen willst du reinlegen?",string1,"Reinlegen","Rausnehmen");
}
}
}
if(dialogid==DIALOG_SAVEBOX2)
{
if(response==0)//Rausnehmen
{
if(inputtext[10]<1)
{
}
else
{
if(GetPVarInt(playerid,"SBDrogen")>=inputtext[10])
{
new string1[200];
SetPVarInt(playerid,"SBDrogen",GetPVarInt(playerid,"SBDrogen")-inputtext[0]);
SetPVarInt(playerid,"Drogen",GetPVarInt(playerid,"Drogen")+inputtext[0]);
format(string1,sizeof(string1),"Du hast %i Drogen aus der SaveBox genommen.",inputtext[0]);
SendClientMessage(playerid,gruen,string1);
}
}
}
if(response==1)//Reinlegen
{
if(inputtext[10]<1)
{
}
else
{
if(GetPVarInt(playerid,"Drogen")>=inputtext[10])
{
new string2[200];
SetPVarInt(playerid,"SBDrogen",GetPVarInt(playerid,"SBDrogen")+inputtext[0]);
SetPVarInt(playerid,"Drogen",GetPVarInt(playerid,"Drogen")-inputtext[0]);
format(string2,sizeof(string2),"Du hast %i Drogen in die SaveBox gelegt..",inputtext[0]);
SendClientMessage(playerid,gruen,string2);
}
}
}
} -
Danke danke
-
Sorry das ich nach Jahren nochmal hier was frage....
Ich suche aber nur die Objekt ID von der SaveBox...
Ich finde sie nämlich nicht in deinen Zeilen, kann sein das ich blind bin..:S -
Jo,
habe mein /makeadmin Befehl kopiert umgeschrieben für /makeleader und nun bekomme ich immer wenn ich InGame /makeleader eingeben die Nachricht, das Es nur Fraktionen zwichen ID 1 und 3 gibt....
Auch wenn ich Parameter weglasse...Der Admin Befehl(der funktioniert)
Spoiler anzeigen ocmd:makeadmin(playerid,params[])
{
new string1[200],string2[200],string3[200],pID,rang;
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
if(rang < 0 || rang > 5) return SendClientMessage(playerid,rot,"Es gibt nur Admin Ränge von 0 bis 5.");
if(GetPVarInt(playerid,"Admin")>=4)
{
if(sscanf(params,"ii",pID, rang))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeadmin [ID] [Rang]");
format(string1,sizeof(string1),"%s hat dir Admin Rang %i gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),rang);
SendClientMessage(pID,gruen,string1);
format(string2,sizeof(string2),"Du hast %s den Admin Rang %i gegbeen.",SpielerName(pID),rang);
SendClientMessage(playerid,gruen,string2);
format(string3,sizeof(string3),"[ADM]: %s hat %s den Admin Rang %i gegeben.",SpielerName(playerid),SpielerName(pID),rang);
SendClientMessageToAll(gruen,string3);
SetPVarInt(pID,"Admin",rang);
}
else
{
SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
}
return 1;
}Der verbuggte /makeleader Befehl
Spoiler anzeigen ocmd:makeleader(playerid,params[])
{
new string1[200],string2[200],pID,frak;
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
if(GetPVarInt(playerid,"Admin")>=4)
{
if(sscanf(params,"ii",pID, frak))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeleader [ID] [Fraktion]");
format(string1,sizeof(string1),"%s hat dir Leader Rechte von der Fraktion %s gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),FrakName(pID));
SendClientMessage(pID,gruen,string1);
format(string2,sizeof(string2),"Du hast %s Leader Rechte von der Fraktion %s gegbeen.",SpielerName(pID),FrakName(pID));
SendClientMessage(playerid,gruen,string2);
SetPVarInt(pID,"Fraktion",frak);
}
else
{
SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
}
return 1;
}Okay habe es gefunden und zwar habe ich
if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
zu
if(frak < 0 || frak > 5) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
geändertaber wieso geht das nun`?
-
Hallo,
wollte mein Script ein paar Freunden zeigen und da ist mir aufgefallen, dass vieles gar nicht bei anderen ID´s als 0 klappt.
Bsp.
Ich lasse Skins wenn man sich registriert setzen aber die anderen Spawnen mit einem CJ Skin.Bei mir hat immer alles geklappt habe alles getestet jedoch immer alleine.
Kann es sein das ich irgendwas noch im Script definieren muss das es bei den anderen IDS auch funktioniert? -
Jeffry....
ich glaube du kannst in die Zukunft sehenHabe mir dabei gedacht: Hm dann setzt doch einfach mal bei jedem Befehl hinter params ein []...
Nunja ich glaube du weißt was dann passiert.... ein derber Runtime Error.Da du es mir aber so geil erklärt hast, weiß ich was ich da gemacht habe und habe es wieder weggemacht und nun klappt wieder alles...
Danke