Beiträge von Templer
-
-
Wow ich versteh deine Frage nicht und deine Code Definitionen auch nicht xD Noch verwirrender gehts nicht oder?
Außerdem hast du das
format(s,sizeof(s),"acc/%s.ini",name);
vergessenEdit://Ich meine die Funktionsnamen ergeben keinen richtigen Sinn und es passt alles
-
Nun du weißt schon, nur weil es boolean heißt muss es nicht immer true oder false stehen haben, sondern kann auch die Integer Wert 1 und 0 stehen haben. Also du sollst den Boolean als ein Integer behandeln und es passt alles ^^.
Denn:
- 1..true
- 0..false
-
So hier die ausführlichere Erklärung:
new NitroPickups[2]; //Wieviele NitroPickups du hast.
new RepairPickups[2]; //Wieviele RepairPickups du hast.new Float:RepairPickupsPos[][3] = {
{X, Y, Z}, //Die X, Y, Z Koordinaten mit deinen ersetzen.
{X, Y, Z},
{X, Y, Z} //Am Ende kein Beistrich mehr, wie du es erkennen kannst.
}new Float:NitroPickupsPos[][3] = {
{X, Y, Z}, //Die X, Y, Z Koordinaten mit deinen ersetzen.
{X, Y, Z},
{X, Y, Z} //Am Ende kein Beistrich mehr, wie du es erkennen kannst.
}stock IsARepairPickup(pickupid) //Die Pickupid mit der die Funktion aufgerufen wurde.
{
for(new repair = 0; repair < sizeof(RepairPickups); repair++) //Erstellt die Definition repair, zählt bis zur Nummer 1 (nicht zur 2), da 0 auch eine Zahl ist und zählt die Variable einfach rauf.
{
if(pickupid == RepairPickups[repair]) //Überprüft die PickupID von den erstellten PickupID´s und dem aufgehobenemen Pickup.
{
return repair; //Wiedergibt den Wert von repair.
}
}
return false; //Wiedergibt den Wert false wenn es kein RepairPickup ist.
}
//Das gleiche bei Nitro Pickups nur halt heißt es 'NitroPickups' ^^
stock IsANitroPickup(pickupid) //Nebenbei gemerkt, es ist ja egal welcher Funktionsname die Funktion hat ^^
{
for(new nitro = 0; nitro < sizeof(NitroPickups); nitro++) //Das gleiche auch bei der Definition nitro, die oben repair heißt. Man könnte auch 'count' oder sowas verwenden, oder auch 'i'.
{
if(pickupid == NitroPickups[nitro])
{
return nitro;
}
}
return false;
}public OnGameModeInit()
{
//Die Zahl 0 Stimmt da du, bämisch gesagt, oben die Anzahl der Pickups eingibst und unten ab 0 zum zählen anfängst...
//Bei dem NitroPickp gab es nix besseres deswegen nahm ich so ne Rote Weinflasche her ^^
//Wenn du ein anderes Pickup willst dann schau unter http://wiki.sa-mp.com/wiki/Game_Object_ID_List
//Die PickupArt 14 ist für Spieler in Fahrzeugen gedacht.
//Der Wert -1 steht halt auch dafür das es in allen virtuellen Welten angezeigt werden soll.
for(new nitro = 0; nitro < sizeof(NitroPickups); nitro++) //Geht alle vorhandenen Nitro Pickups durch.
{
NitroPickups[nitro] = CreatePickup(1484, 14, NitroPickupsPos[nitro][0], NitroPickupsPos[nitro][1], NitroPickupsPos[nitro][2], -1);
}
//Das Pickup beim Repair Pickup ist korrekt. ^^ Also schaut auch danach aus.
for(new repair = 0; repair < sizeof(RepairPickups); repair++) //Geht alle vorhandenen Repair Pickups durch.
{
RepairPickups[repair] = CreatePickup(3096, 14, RepairPickupsPos[repair][0], RepairPickupsPos[repair][1], RepairPickupsPos[repair][2], -1);
}
//Eine INFO am Rande. Bei RepairPickupsPos und NitroPickupsPos fragt er bei
// 0 ... die X-Koordinate ab
// 1 ... die Y-Koordinate ab
// 2 ... die Z-Koordinate ab
return 1;
}public OnPlayerPickUpPickup(playerid, pickupid) //Wird aufgerufen wenn einer ein Pickup aufhebt.
{
if(IsARepairPickup(pickupid)) //Überprüft ob es ein RepairPickup ist.
{
GameTextForPlayer(playerid, "Fahrzeug ~y~repariert!", 2500, 3); //Kleiner GameText ^^
RepairVehicle(GetPlayerVehicleID(playerid)); //Repariert alle physikalischen Schäden wie Motorhaube...
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0); //Setzt das Fahrzeug Leben auf das volle zurück. Also 1000.
//Im folgendem wird das Pickup deshalb wieder zerstört und neu erstellt, da das Pickup bei der
//Pickupart 14, welche man nur in Fahrzeugen aufsammeln kann, erst sehr spät wieder erscheinen.
//Solltest du jedoch nicht wollen, dass das Pickup nach dem aufheben wieder benützbar wird einfach das
//folgende Löschen oder auskommentieren. (Das gleiche bei den Nitro-Pickups unten)
new repair = IsARepairPickup(pickupid); //Holt die statische PickupID neu heraus.
DestroyPickup(pickupid); //Zerstört das Pickup.
//Im folgenden wird das Pickup neu erstellt.
RepairPickups[repair] = CreatePickup(3096, 14, RepairPickupsPos[repair][0], RepairPickupsPos[repair][1], RepairPickupsPos[repair][2], -1);
}
if(IsANitroPickup(pickupid)) //Überprüft ob es ein NitroPickup ist.
{
GameTextForPlayer(playerid, "Nitro ~y~eingebaut!", 2500, 3);
AddVehicleComponentID(GetPlayerVehicleID(playerid), 1010);
//INFO: Die ID 1010 steht für Nitro 10x, also Nitro kann 10mal benützt werden.
// die anderen ID´s lauten:
// 1008 .. Nitro 5x
// 1009 .. Nitro 2x
//Pickup wird neu erstellt...
new nitro = IsANitroPickup(pickupid);
DestroyPickup(pickupid);
NitroPickups[nitro] = CreatePickup(1484, 14, NitroPickupsPos[nitro][0], NitroPickupsPos[nitro][1], NitroPickupsPos[nitro][2], -1);
}
return 1;
} -
-
Ein neuer Tag für Horst auf der Staatsbrücke neben einem Fest, welches er später merkt...
Zitat*hicks* scheiße man ok nochmal Zählen, also..
1 und 1 is ... äh 2 jo und 1 ähh... ah genau 3 und noch 1....*lautes geheule* ähh Freibier? Jahaa Freibier dort drühen *hicks*
>-------2 Stunden später---------<
...ähh... so ok wo war ich jetzt? Verdammt habs vergessen... *hicks*So Mr. Dudalus, der arme Horst hat vergessen sich sein Ergebnis, was er vorher schwerst ausgerechnet hat, zu merken. Na capiché?
-
-
Wow, wie kann man nur soviel herumphilosophieren Nicht raten sondern selbst testen, sonst kommt ja so ein schmarn heraus wie hier.
Also Lösung:
new giveplayer[MAX_PLAYER_NAME], Float:X, Float:Y, Float:Z, seatpid = GetPlayerVehicleSeat(playerid), seatgid = GetPlayerVehicleSeat(giveplayerid), veh = GetPlayerVehicleID(playerid);
GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X, Y, Z); SetPlayerPos(giveplayerid, X, Y, Z);
PutPlayerInVehicle(giveplayerid, veh, seatpid); PutPlayerInVehicle(playerid, veh, seatgid);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* Du hast %s's Fahrschulauto uebernommen.",giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);Edit: hab pastebin Link zuspät gesehen, hier der korrekte Code
if(strcmp(cmd, "/act", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
if(!IsAnInstructor(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Fahrlehrer!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD3, "BENUTZE: /act [playerid/TeildesNamen]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Ungültige SpielerID oder Spieler ist Offline!");
if(TakingLesson[giveplayerid] != 1) return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler hat keine Fahrstunde!");
if(!IsAFahrschulCar(pvehid) && !IsAFahrschulCar(gvehid)) return SendClientMessage(playerid, COLOR_RED, "Ihr muesst in einem Fahrschulauto sein!");
if(!IsPlayerInVehicle(playerid, GetPlayerVehicleID(giveplayerid))) return SendClientMessage(playerid, COLOR_RED, "Ihr muesst im gleichen Fahrschulauto sein!");
new Float:X, Float:Y, Float:Z, seatpid = GetPlayerVehicleSeat(playerid), seatgid = GetPlayerVehicleSeat(giveplayerid), veh = GetPlayerVehicleID(playerid);
if(seatgid != 0) return SendClientMessage(playerid, COLOR_RED, "Dein Fahrschüler ist nicht am Fahrersitzplatz!");
GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X, Y, Z); SetPlayerPos(giveplayerid, X, Y, Z);
PutPlayerInVehicle(giveplayerid, veh, seatpid); PutPlayerInVehicle(playerid, veh, seatgid);
GetPlayerName(playerid, sendername, sizeof(sendername)); GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* Du hast %s's Fahrschulauto uebernommen.",giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Fahrlehrer %s hat dein Fahrschulauto uebernommen.",sendername);
return SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
} -
@ FoxHound Probiers damit
new File:oilo = fopen("olio.cfg", io_readwrite), cache[256], pos = 0, foundpos;
if(oilo)
{
fread(oilo, cache);
for(; pos < strlen(cache); pos++)
{
foundpos = strfind(cache, "x", true);
if(foundpos == -1) break;
else strdel(cache, foundpos, foundpos+1);
}
fwrite(oilo, cache);
fclose(oilo);
return true;
} -
Nunja, ich denke ich weiß was du meinst jedoch ist diese Idee sinnlos, aber wieso nicht
In deinem Beispiel muss man ja nur ein Wort ersetzen Nütze daher: strins
Den für dich erstellten stock oben in dein Script einfügen ^^:
stock ReplaceWordInString(string[], const findstr[], const repstr[]) //by Templer
{
new length = 512, cache[512], pos = strfind(string, findstr, true);
if(strlen(repstr) != strlen(findstr))
{
strmid(cache, string, pos+strlen(findstr), length);
strdel(string, pos, length);
strins(string, repstr, pos, length);
strcat(string, cache, length);
}
else
{
strdel(string, pos, pos+strlen(findstr));
strins(string, repstr, pos, length);
}
return string;
}und hier die Verwendung:
new str[128];
format(str,128,"Juergen hat Hannes gebannt, weil er seinen Vater beleidigt hat!");
printf("Ergebnis: %s", ReplaceWordInString(str, "seinen Vater", "seine Mutter"));Bedeutet das Ergebnis lautet: Juergen hat Hannes gebannt, weil er seine Mutter beleidigt hat!
Also keine Ahnung warum ich für dich diesen stock gemeistert habe Nebenbei ist mein stock besser als das normale string, da es das gesuchte Wort ersetzt und wenn das zu ersetzende Wort länger oder kürzer ist, wird es richtig eingesetzt
Also Viel Spaß
//Edit: Mom installiere Firefox wegen Scriptformatierungsproblem..
//Edit2: Formatierungsproblem, also Ausrichtung, behoben.. -
Hallo Leute
Ich hatte heute ne Konversation mit einem Typen Black, dem ich das >>c<< geistig genommen habe und nun Blak heißt. rückwärts gelesen ergibt es Kalb ^^. Da ich selbst den Dialog lustig finde wollte ich ihn mal hier veröffentlichen ^^. Die erwähnten Namen wurden durch "bekannte" Namen ersetzt, außer der Spieler Black, denn ohne den Namen gäbe es den Sketch nicht ^^.
Dialog im Anhang!
Freue mich auf sinnlose Kommentare
Mfg Templer
Edit: Wegen unachtsamen Schreiben bitte ich die Moderatoren um Gnade Es gehört zu dem Niveaulosem-Dialog dazu.
-
Das kannst du frei Entscheiden Es gibt ja leider auch Leute, die erstellen für jedes Tor einen eigenen Befehl wie /lspdtor, /lspdtor_new und Co, wo dann sich keiner mehr auskennt Also am besten ist es einfache und wenn es blöd klingt, einheitliche Befehle zu erstellen, da nicht viele die Nerven zB haben Befehle anders zu schreiben und Co Aber ansonsten kannst du ja von den GF-Befehlen nachschauen, wie die Parameter abgefragt werden bzw. nützt du sscanf von Y_Less.
-
Awesome, solltest du meinen das der Sichtwinkel von einem Spieler zum anderen gerichtet werden soll, so muss ich dich enttäuschen, da man derzeit den Vektor vom Spieler nicht ändern kann. Möglich ist nur eine Feste Kamera zu dieser Richtung zu erstellen, also SetPlayerCameraLookAt und Co, aber da hat dann der Spieler nicht die "richtige" 3rd Person Perspektive bzw. wenn man sowas nachscriptet es ruckeln wird ^^. Was man gut verändern kann ist die Sichtrichtung von der Spielfigur mit SetPlayerFacingAngle, aber das weißt du schon
-
Wie ich sehe treten da viele Leute mit Statements wie Integration in das Volk, Verminderung der Einwanderungen, Kenntnise in der Sprache des Volkes, in welches man eintretet, auf. Jedoch haben diese Worte überhaupt an Wert? Es gibt sehr viele Deutsche als Beispiel, die euren gleichen Worte sind, welche in ein anderes Land reisen aus Gründen wie Währungsabfall, Arbeit, Familie oder sonstigem und können dann, sagen wir grob, die Sprache vom eingereisten Land nichtmal, wenn nicht anders. Rassismus und sonsitges fällt ja noch immer an, sonst würden wir ja keine Landesgrenzen besitzen die uns symbolisch zeigen, wie wir uns von den anderen Mitmenschen unterscheiden. Was ich eigentlich mit den Grenzen andeuten will ist, dass ein Mensch sich nicht unbedingt an ein Land, eine Sprache, einer Religion oder einer Sprache anpassen oder angehören, nur weil er in einem symbolisch gesehenen fremdem "Land" ist, obwohl es noch immer die gleiche Mutererde ist. Denn es muss ja nicht sein, dass er abhängig von der Regierung ist, dass er es zu Nöten hat Arbeitslosengeld zu beanspruchen oder sonstige Hilfeleistungen. Natürlich schaut die Sache anders aus, wenn sogenannte Schnorrer aus einem anderen Land aus "Feigheit" und "Untreue" zu uns reisen würde und nur von der Regierung alleine Leben würde und es sich auf der Straße gemütlich macht, aber man kann ja keinen Menschen dazu zwingen den "richtig", von uns gesehenen Pfad, zu gehen. Den der Mensch besitzt ein eigenes Entscheidungsvermögen, außer er körperlich stark beeinträchtigt ist. Am Ende von diesem Text werden die meisten von euch dann auch die Schlussfolgerung ziehen, dass dieser langsinnige Kommentar unnütz ist und eigentlich auch sehr langweilig. Langweilig genau so wie das Thema hier ^^. Wenn es mehrere Meinungsverschiedenheiten gäbe in diesem Thema, würde ich nichtmal diesen Kommentar ablassen, da man dann selbst erkennen kann die Tatsache. So für mich ist damit das Thema beendet und Viel Spaß beim lesen
-
ChangeVehicleColor mit welchen du die Farben von einem Fahrzeug ändern willst. Solltest du jedoch auch wollen, dass man die Farbe von deinem Fahrzeug Abfragt und diese dann eintönig zu färben (wenn 2 verschiedene Farben), dann nütze folgende Variante:
- Lade die Zip Datei vom Anhang herunter und füge die Include Datei VehColor.inc unter pawno/includes/ ein..
- Schreibe nun oben in deinem Script folgendes ein: #include <VehColor>
- Schaue dir nun folgende PAWN-Quellcodes an
forward CheckVehColor()
public OnGameModeInit()
{
SetTimer("CheckVehColor", 5000, 1); //Überprüft alle 5 Sekunden
return 1;
}public CheckVehColor()
{
new vehicle = 0, color[2];
for(; vehicle < MAX_VEHICLES; vehicle++)
{
GetVehicleColor(vehicle, color[0], color[1]);
if(color[1] != color[0]) ChangeVehicleColor(vehicle, color[0], color[0]);
}
return 1;
}Natürlich müsstest du diesen dann anpassen, hab ihn aber so gepostet, damit du verstehst wie es funktioniert.
-
Wird der einer von den Texten überhaupt angezeigt? Wenn nicht, dann schau mal davor in diesem Callback, ob vielleicht der Callback schon vorher mit einem return abgebrochen wurde. Sollte ansonsten doch eine Meldung kommen, hast du es falsch eingefügt
-
Wenn manche Leute nicht dort spawnen, würde es doch bedeuten, dass bei OnPlayerSpawn davor der Spieler davor gehindert wird oder? Also guck mal schleunigst nach bei OnPlayerSpawn, ob davor irgendwas ist, was diesen Vorgang blockiert Ich meine, du hast ja schon die Fehleranalyse gemacht und schaust dort nichtmal nach
"Dinge wahrzunehmen ist der Keim der Intelligenz." - Lao tse
-
Er meinte es so
new gMissionsVariable[MAX_PLAYERS]; //Soll halt die Abfrage wie bei dir sein, ob er eine Mission angenommen hat...
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER && gMissionsVariable[playerid] != 0 && GetPlayerVehicleID(playerid) == 408) //Überprüft ob Spieler Mission angenommen hat und in FahrzeugID 408 sitzt!
{
SetPlayerCheckpoint(playerid, X, Y, Z, 2.5);
}
return 1;
} -
Dann hast du es doch falsch definiert unter Wanteds
-
Hier bitte Hab auch eingebaut, dass wen kein Verbrecher da ist, die Meldung auch kommt
dcmd_verbrecher(playerid,params[])
{
#pragma unused params
if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5)
{
new i = 0, pname[MAX_PLAYER_NAME], string[MAX_PLAYER_NAME+19], bool:check = false;
for(;i < MAX_PLAYERS; i++)
{
SendClientMessage(playerid, COLOR_YELLOW, "|=========Gesuchte========|");
if(IsPlayerConnected(i) && IsWanted[i] == 1)
{
check = true;
GetPlayerName(i,pname,sizeof(pname));
format(string, sizeof(string), "** %s **", pname);
SendClientMessage(playerid, COLOR_WHITE, string);
}
}
if(check == false) SendClientMessage(playerid, COLOR_WHITE, "** Keine Verbrecher derzeit vorhanden **);
}
return 1;
}