Beiträge von d0ma
-
-
code stimmt soweit
if(!IsPlayerInRangeOfPoint(playerid,3,1681.5820,-2306.6919,13.5379))
2Möglichkeiten:
- 3 ist die Entfernung -> vll erhöhen ?
- 1681.5820,-2306.6919,13.5379 ist die position -> überprüfen ob diese richtig ist ?
-
#define MsToSeconds(%1) ((%1)/1000)
so schwer kann das doch nicht sein das man draukommt durch 1000 zu teilen oder ?verwendung:
ocmd:restart(playerid,params[])
{
new time,str[128];
if(!IstSpielerAdmin(playerid,5)) return SendClientMessage(playerid,weis,"Du bist kein Projektleiter");
if(sscanf(params,"d",time)) return SendClientMessage(playerid,weis,"/restart [TIME]");
if(time >10000 || time < 60000) return SendClientMessage(playerid,ROT,"Du kannst nur 10000 - 60000 eingeben! (10000 entspricht 10 Sekunden!)");
SetTimer("restart",time,0);
format(str,sizeof(str),"Der Server wird in %d Sekunden neugestartet.",MsToSecond(time));
SendClientMessageToAll(weis,str);
return 1;
} -
bei OnGameModeInit sind auch noch keine spieler da um sie der whitelist hinzuzufügen oder ?
oder so mit AddToWhitelistByName(name[]):
mit dem code unterhalb hast du jetzt
AddToWhitelistByName(name[]) zum hinzufügen von Namen
und
AddToWhitelist(playerid) zum hinzufügen von spielern die online sindstock AddToWhitelistByName(name[])
{
new str[64];
format(str, sizeof(str), "whitelist/%s.txt", name);
fclose( fopen(str, io_write) );
return 1;
}stock AddToWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
fclose( fopen(str, io_write) );
return 1;
}stock RemoveFromWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
if(fexist(str))fremove(str);
return 1;
}stock IsOnWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
return fexist(str);
} -
das ist im dini include und heißt das du ret_memcpy nirgends verwendest, was nicht schlimm ist.
Ist sozusagen nur ein *Hinweiß* -
Das stimmt schon so, hat nichts mit MAX_PLAYER_NAME zu tun
-
Für den code unterhalb musst du einen ordner namens "whitelist" im "scriptfiles" ordner erstellen
Hier das ganze kurz erklärt:
AddToWhitelist: Datei "whitelist/Spielername.txt" anlegen
RemoveFromWhitelist: Datei "whitelist/Spielername.txt" löschen
IsOnWhitelist: Überprüfe ob Datei existiert, wenn ja gib 1 zurück ansonsten 0
stock AddToWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
fclose( fopen(str, io_write) );
return 1;
}stock RemoveFromWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
if(fexist(str))fremove(str);
return 1;
}stock IsOnWhitelist(playerid)
{
new str[64];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "whitelist/%s.txt", str);
return fexist(str);
} -
Erstmal währe es sinnvoll zu wissen mit welchem Editor du das ganze erstellt hast, dann kann dir vll. jemand helfen.
-
Hier geht gar nichts mehr ohne sscanf im Forum, weil sich keiner hier mit dem Bearbeiten von Texten auseinander setzt;)
new text[] = "Beispiel|TATU|TATA";
new string[10][20]; // hier wird alles gespeichert
new i = 0, c = 0, d = 0;
while(text[i] != 0 && c < sizeof(string) && (d+1) < sizeof(string[]))
{
if(text[i] != '|')
{
string[code=c][d] = text[i];
d++;
}
else
{
c++;
d = 0;
}
i++;
}//Ausgabe (zum test)
for(i = 0; i< sizeof(string); i++) printf("String[%d]: %s", i, string[i]); -
Dein Code: Wenn belegt = anziehen, wenn nicht belegt = ausziehen
Muss aber genau andersrum sein, damit es Sinn ergibt:
if(IsPlayerAttachedObjectSlotUsed(playerid,1))
{
RemovePlayerAttachedObject(playerid,1);
SendClientMessage(playerid,Grün,"Du hast dir deine Sauerstoffmaske ausgezogen.");
}
else
{
SetPlayerAttachedObject(playerid, 1,19472, 2,0.000000,0.131999,-0.001999,-8.300000,85.999992,107.299964,0.964999,1.000000,1.000000);
SendClientMessage(playerid,Grün,"Du hast dir deine Sauerstoffmaske angezogen.");
} -
ja dort wo überall else {//fehler ... } steht muss der code hin damit die Eingabe wiederholt wird
-
Das erste unterscheidet zwischen a s m bzw. d und das zweite überprüft nur ob es eins von den vieren ist(kommt drauf an was du genau machen willst)
new inputText[10];
if(inputtext[1] =='\0')
{
if(inputText[0] == 'a')
{//addition
}
else if(inputText[0] == 's')
{//subtraktion
}
else if(inputText[0] == 'm')
{//multiplikation
}
else if(inputText[0] == 'd')
{//division
}
else
{//fehler
}
}
else
{//fehler}
new inputText[10];
if(inputtext[1] =='\0')
{
if(inputText[0] == 'a' || inputText[0] == 's' || inputText[0] == 'm' || inputText[0] == 'd')
{//richtig}
else
{//fehler}
}
else
{//fehler}
-
Ahh... Okay
und was muss ich mit den Include ins script schreiben? English is momentan nicht mein fall :DD
schau nochmal genauDa ist ein Link für die deutsche version im topic
-
Mit RemoveBuildingForPlayer aus GTA Objekte entfernen und mit CreateObject wieder erstellen und anschließend SetObjectMaterial
-
Schau mal in meine Signatur
-
http://wiki.sa-mp.com/wiki/Material_Size
durchprobieren, sind nicht viele -
erst entfernen mit der "Entf" taste und dann einfach den neuen Zaun mit ID 19312 einfügen ???
RemoveBuildingForPlayer(playerid, 16094, 191.1406, 1870.0391, 21.4766, 0.25);
CreateObject(19312, 191.14059, 1870.03906, 21.47660, 0.00000, 0.00000, 0.00000); -
1) Wähle den Zaun aus im Editor und drücke "Entf", dann ist der Zaun weg
2) "Insert Object" mit ID 19312
3) neuen Zaun richtig platzieren
4) "Show Code" drücken
5) RemoveBuildingForPlayer zeilen in OnPlayerConnect einfügen
6) CreateObject Zeilen in OnGameModeInit einfügen -
ach stimmt, da war was
mit RemoveBuildingForPlayer den Zaun entfernen und anschließend nur den einen teil wieder hinbauen den du willst
Sind diese ObjectIDs:
http://gta-sa-mp.de/object/?modelID=19312
und
http://gta-sa-mp.de/object/?modelID=19313 -
geht nicht