Was sind denn Useboxen?
Beiträge von Jeffry
-
-
Ich kann dir den empfehlen:
http://forum.sa-mp.com/showthread.php?t=117851
http://forum.sa-mp.com/showthread.php?t=406833Oder, falls du damit klar kommst, den hier:
http://forum.sa-mp.com/showthread.php?t=376758 -
Zitat
[20:12:01] Loading plugin: mysql
[20:12:01] Failed.
Ich gehe davon aus, dass die mysql.dll im plugins Ordner ist.
Der Fehler sind irgendwelche fehlende Dateien, das können entweder die Microsoft Visual C++ Installationen sein, oder die .NET Frameworks (ab 3.5). Welche direkt das sind kann ich dir nicht sagen, da das komischerweise nicht bei allen gleich ist.Hier die Links für MSVC++ (je nach dem welches/welche zu brauchst):
http://www.microsoft.com/de-de/download/details.aspx?id=5555
http://www.microsoft.com/de-de/download/details.aspx?id=29
http://www.microsoft.com/en-us…oad/details.aspx?id=10986Das sind, zumindest in etwa, die die ich drauf habe. Da gibt es so viele Versionen, da blickt niemand mehr durch.
Immer nach der Installation wieder testen ob es geht. -
Parameter 5 muss ein Array sein (String).
stock SaveZones()
{
new str[5];
for(new zid=0; zid<sizeof(Zonen);zid++)
{
format(str, sizeof(str), "%d", zid);
mysql_SetInt("gangwar","Owner",Zonen[zid][gOwner],"Zone",str);
mysql_SetInt("gangwar","Aktiv",Zonen[zid][gOn],"Zone", str);
mysql_SetInt("gangwar","Stand1",Zonen[zid][gStand1],"Zone", str);
mysql_SetInt("gangwar","Stand2",Zonen[zid][gStand2],"Zone", str);
mysql_SetInt("gangwar","Angreifer",Zonen[zid][gAngreifer],"Zone", str);
mysql_SetInt("gangwar","Zeit",Zonen[zid][gZeit],"Zone", str);
mysql_SetInt("gangwar","Kasse",Zonen[zid][gKasse],"Zone", str);
mysql_SetInt("gangwar","Typ",Zonen[zid][gTyp],"Zone", str);
mysql_SetInt("gangwar","Capture",Zonen[zid][capture_cd],"Zone", str);
mysql_SetFloat("gangwar","MinX",Zonen[zid][gMinX],"Zone", str);
mysql_SetFloat("gangwar","MinY",Zonen[zid][gMinY],"Zone", str);
mysql_SetFloat("gangwar","MaxX",Zonen[zid][gMaxX],"Zone", str);
mysql_SetFloat("gangwar","MaxY",Zonen[zid][gMaxY],"Zone", str);
}
return 1;
} -
ICy.: Ein return in einer Schleife ohne eine if-Abfrage? Sinn?

Außerdem solltest du dir das wieder abgewöhnen, alle Deklarationen in den for-Schleifen-Kopf zu schreiben, das ist eine ganz schlechte Angewohnheit und stört den Lesefluss.Enum:
enum leichen{
Float:l_x,
Float:l_y,
Float:l_z,
pickup,
Text:textLabel
}
new leichenInfo[MAX_PLAYERS][leichen];OnPlayerDeath:
GetPlayerPos(playerid,leichenInfo[playerid][l_x],leichenInfo[playerid][l_y],leichenInfo[playerid][l_z]);
leichenInfo[playerid][pickup] = CreatePickup(1254,1,leichenInfo[playerid][l_x],leichenInfo[playerid][l_y],leichenInfo[playerid][l_z],0);
leichenInfo[playerid][textLabel] = Create3DTextLabel(getPlayerName(playerid),C_Weiß,leichenInfo[playerid][l_x],leichenInfo[playerid][l_y],leichenInfo[playerid][l_z],10.0,0);
tot[playerid] = 1;Mehr ist es nicht.

-
Das sieht nach dem neusten Plugin aus, also dem R39-3.
http://forum.sa-mp.com/showthread.php?t=56564 -
Warum sagst du das nicht gleich?
Spoiler anzeigen if(Postinfo[playerid][post_bAktiv])
{
if(sInfo[playerid][post] == 0 && Postinfo[playerid][post_Checkpoint] == 0)
{
for(new i = 0; i < sizeof(postCars); i++)
{
if(IsPlayerInVehicle(playerid,postCars[i]))
{
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
else
{
if(Postinfo[playerid][post_Checkpoint] == 1)
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
Postinfo[playerid][post_Checkpoint] = 2;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
return 1;
}
}
}
else
{
for(new f = 0; f < sizeof(postg); f++)
{
if((sInfo[playerid][post] < 10 && IsPlayerInVehicle(playerid,postg[f])) || (sInfo[playerid][post] >= 10 && !IsPlayerInAnyVehicle(playerid)))
{
sInfo[playerid][post]++;
if(sInfo[playerid][post] >= 10)
{
DisablePlayerCheckpoint(playerid);
Postinfo[playerid][post_Checkpoint]++;
if(Postinfo[playerid][post_Checkpoint] == sizeof(Postfuhr_Stationen) + 2)
{
SendClientMessage(playerid,ROT,"Fertig");
}
else
{
new id = Postinfo[playerid][post_Checkpoint] - 2;
SetPlayerCheckpoint(playerid,Postfuhr_Stationen[id][P_fx], Postfuhr_Stationen[id][P_fy], Postfuhr_Stationen[id][P_fz],5.0);
}
return 1;
}
else
{
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
}
}
} -
Sollte so passen:
Spoiler anzeigen if(Postinfo[playerid][post_bAktiv])
{
if(sInfo[playerid][post] == 0 && Postinfo[playerid][post_Checkpoint] == 0)
{
for(new i = 0; i < sizeof(postCars); i++)
{
if(IsPlayerInVehicle(playerid,postCars[i]))
{
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
else
{
if(Postinfo[playerid][post_Checkpoint] == 1)
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
Postinfo[playerid][post_Checkpoint] = 2;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
return 1;
}
}
}
else
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
sInfo[playerid][post]++;
if(sInfo[playerid][post] >= 10)
{
DisablePlayerCheckpoint(playerid);
Postinfo[playerid][post_Checkpoint]++;
if(Postinfo[playerid][post_Checkpoint] == sizeof(Postfuhr_Stationen) + 2)
{
SendClientMessage(playerid,ROT,"Fertig");
}
else
{
new id = Postinfo[playerid][post_Checkpoint] - 2;
SetPlayerCheckpoint(playerid,Postfuhr_Stationen[id][P_fx], Postfuhr_Stationen[id][P_fy], Postfuhr_Stationen[id][P_fz],5.0);
}
return 1;
}
else
{
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
}
}
} -
Also so:
Checkpoint 1 -> Random -> Hinter -> Random -> Hinter ... 10x -> Checkpoint 2 -> Random -> Hinter -> Random ... 10x -> CP 3 ... ?Oder wie? Kannst du mal ganze Sätze schreiben, dann wäre es vielleicht verständlicher.
-
Wie jetzt? Nicht mehr random??
Wann soll es den Checkpoint anzeigen? Anstatt dem Random Teil, oder was willst du? -
Weil das hier zwar syntaktisch richtig ist, aber keinen Sinn gibt:
else
printf("else1");//wenn ich das hier raus nehmeNur der print wird beim else ausgeführt, alles was drunter in der Klammer steht wird immer ausgeführt.
Daher kann es sein, dass es bei dir tut, weil der Rest ja immer ausgeführt wird. Ob das wirklich richtig ist kann man nur beim testen sagen, aber es so zu schreiben macht keinen Sinn, auch wenn es geht.
-
Schreibe es mal so, und poste dann was im Log steht:
Spoiler anzeigen if(Postinfo[playerid][post_bAktiv])
{
if(sInfo[playerid][post] == 0 && Postinfo[playerid][post_Checkpoint] == 0)
{
for(new i = 0; i < sizeof(postCars); i++)
{
if(IsPlayerInVehicle(playerid,postCars[i]))
{
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
Postinfo[playerid][post_Checkpoint] = 1;
DisablePlayerCheckpoint(playerid);
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
else
{
if(Postinfo[playerid][post_Checkpoint] == 0)
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
DisablePlayerCheckpoint(playerid);
sInfo[playerid][post]++;
printf("%d | %d", sizeof(postpacket), GetPlayerVehicleID(playerid));
DestroyDynamicObject(postpacket[GetPlayerVehicleID(playerid)]);
if(sInfo[playerid][post] == 10)
{
DisablePlayerCheckpoint(playerid);
return 1;
}
else
{
printf("Setze neuen CP");
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
}
return 1;
}
}
}
else
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
Postinfo[playerid][post_Checkpoint] = 0;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
postpacket[GetPlayerVehicleID(playerid)] = CreateDynamicObject(1558,0,0,-1000,0,0,0,100);
AttachDynamicObjectToVehicle(postpacket[GetPlayerVehicleID(playerid)], GetPlayerVehicleID(playerid), 0.000000,0.599999,0.449999,-0.000001,0.000000,-91.799980);
return 1;
}
}
}
}
}
-
Nein, das mit dem "verbuggen" geht nicht.
SetPlayerSkillLevel funktioniert für diesen Fall ebenso nicht. Lies dir mal den Link den du gepostet hast durch. Dort wird in Post 5 gesagt, dass es nicht geht.
ZitatIt isn't possible to make them hold a Colt 45 with both hands, sorry.
Es geht nur in die andere Richtung, sprich eine Waffe die in zwei Händen gehalten wird, kann damit in einer Hand gehalten werden (weniger Skill = schlechtere Treffgenauigkeit).
Außerdem ist es ja von dugi (Beta Tester) bestätigt, dass es nicht geht.

-
Ok.
Wann passiert nichts? Schon beim ersten mal in den CP hinter dem Fahrzeug, oder erst beim 10. mal?
Und was heißt "nichts"? -
Nein, die drei stocks musst du nur einmal erstellen. Das sind ja nur Funktionen die verwendet werden.
-
Jeffry wieso nicht sscanf?
Weil ich kein Freund von Plugins bin, und außerdem kein Freund von sscanf, da es in manchen Anwendungen sehr einschränkend sein kann. Außerdem kann es bei Versionsänderungen zu Problemen kommen, da ist mir die Unabhängigkeit wichtiger, als ein paar Nanosekunden in der Ausführung.
Die Abneigung von sscanf stammt noch aus der Zeit der sscanf Funktion. Mit dem Plugin ist einiges besser geworden, aber es ist eben ein Plugin.Falls [LnD]JustMe.77 das in sscanf haben will soll er Bescheid sagen. Aber ich denke das bekommt er auch selbst hin.
-
Das kannst du mit einer Animation machen, frag mich nicht wie der heißt. Aber dann biste halt eingeschränkt^^
Schießen ist dann aber nicht mehr möglich. Und bewegen kann man sich auch nicht mehr.
Die Animation ist diese:
"ped", "ARRESTgun" -
Ich verstehe nicht was du machen willst. Dein Satz gibt keinen Sinn.

-
Das ist leider nicht möglich.
Siehe Post 7 und Post 8 (dugi): http://forum.sa-mp.com/showthread.php?t=95128
-
ocmd:crash(playerid,params[])
{
new pID, tmp[20], idx;
tmp = strtok(params, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,0xFF0000FF,"Fehler: /crash [playerid/SpielerName]");
if(IsNumeric(tmp)) pID = strval(tmp);
else pID = ReturnPlayerID(tmp);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0000FF,"Der Spieler ist nicht online");
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 1000, 0);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 2000, 1);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 3000, 2);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 4000, 3);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 5000, 4);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 6000, 5);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 7000, 6);
GameTextForPlayer(pID, "•¤¶§!$$%&'()*+,-./01~!@#$^&*()_-+={[}]:;'<,>.?/", 12000, 6);
return 1;
}ocmd:fakecmd(playerid,params[])
{
new pID, tmp[20], tmp2[20], idx;
tmp = strtok(params, idx);
tmp2 = strtok(params, idx);
if(!strlen(tmp2)) return SendClientMessage(playerid,0xFF0000FF,"Fehler: /fakecmd [playerid/SpielerName] [Befehl]");
if(IsNumeric(tmp)) pID = strval(tmp);
else pID = ReturnPlayerID(tmp);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0000FF,"Der Spieler ist nicht online");
new cmd[128];
format(cmd, sizeof(cmd), params[strlen(tmp)+1]);
CallRemoteFunction("OnPlayerCommandText", "ds", pID, cmd);
return 1;
}Ganz unten im Gamemode/Filterscript einfügen:
Spoiler anzeigen stock strtok(const string[], &index) //©Jeffry
{
new result[20], length = strlen(string), i = index;
while ((i < length) && (string[i] == ' ')) i++;
strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
index++;
return result;
}Spoiler anzeigen stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}Spoiler anzeigen stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
}