pLanguage[playerid] = ENG;
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ich vermute mal, dass in deinem enum GER vor ENG steht

bzw steht GER ganz oben im enum und hat daher die ID 0.
Du setzt also die Sprache für den Spieler erst nachdem du ihm schon einen Dialog anzeigst

Ich vermute da liegt der Fehler

Achso und wie in einem anderen Post schon erwähnt, switch ist eigentlich nur sinnvoll, wenn du mehr als 2 Sprachen hast, bei 2 kannste das auch so machen:
Textdraw23[playerid] = CreatePlayerTextDraw(playerid, 224.333312, 183.348114, ((GetPlayerLanguage(playerid) == GER)?("deutsch"):("german")));
Gebe zu, bisschen umständlich, kannst es dir ja theoretisch in einem Makro kürzen:
#define L(%0,%1,%2) ((GetPlayerLanguage(%0)==GER)?(%1):(%2))
Nutzung:
Textdraw23[playerid] = CreatePlayerTextDraw(playerid, 224.333312, 183.348114, L(playerid,"deutsch","german"));
Somit sparst du dir viel ein

-
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_TAXIFARE) { if(response) { if(IsNumeric(inputtext)) { if(strval(inputtext) >= 1 && strval(inputtext) <= 200) { new string[128]; new vehicleid = GetPlayerVehicleID(playerid); for(new i = 0; i < sizeof(pTaxi); i++) { if(pTaxi[i][taxiVehicleID] != vehicleid) continue; pTaxi[i][taxiFare] = strval(inputtext); SendClientMessage(playerid, COLOR_LIGHTBLUE,"Du bist nun im Dienst als Taxifahrer"); pTaxi[i][taxiUsed] = true; pTaxi[i][taxiPlayer] = playerid; pInfo[playerid][pJobDuty] = true; SetPlayerColor(playerid, COLOR_YELLOW); format(string,sizeof(string),"{D7DF01}Taxi Company\n\nFahrer: %s\nKosten: %d$",SpielerName(playerid), pTaxi[i][taxiFare]); Update3DTextLabelText(taxi[i], COLOR_WHITE,string); pTaxi[i][taxiTimer] = SetTimerEx("Taxameter", 1000 * 30, true, "i", pTaxi[i][taxiVehicleID]); } } else { RemovePlayerFromVehicle(playerid); } } } } return 1; }
Hallo,Habe das Problem wen ich einfach nur 0 eingebe wird er aus den Fahrzeug geworfen...
Er soll rausgeworfen werden wen er auf aussteigen klickt.
Sollte der User 0 eingeben sollte der Dialog wieder angezeigt werden.Danke im Vorraus!
-
Das else musst du anders setzen und zwar so, dass es mit dem if von dem response harmoniert

Und da wo du das else jetzt hast schreib darein, dass dem Spieler wieder der Dialog angezeigt werden soll

-
Das else musst du anders setzen und zwar so, dass es mit dem if von dem response harmoniert

Und da wo du das else jetzt hast schreib darein, dass dem Spieler wieder der Dialog angezeigt werden soll

Das else musst du anders setzen und zwar so, dass es mit dem if von dem response harmoniert
Und da wo du das else jetzt hast schreib darein, dass dem Spieler wieder der Dialog angezeigt werden soll
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_TAXIFARE) { if(response) { if(IsNumeric(inputtext)) { if(strval(inputtext) >= 1 && strval(inputtext) <= 200) { new string[128]; new vehicleid = GetPlayerVehicleID(playerid); for(new i = 0; i < sizeof(pTaxi); i++) { if(pTaxi[i][taxiVehicleID] != vehicleid) continue; pTaxi[i][taxiFare] = strval(inputtext); SendClientMessage(playerid, COLOR_LIGHTBLUE,"Du bist nun im Dienst als Taxifahrer"); pTaxi[i][taxiUsed] = true; pTaxi[i][taxiPlayer] = playerid; pInfo[playerid][pJobDuty] = true; SetPlayerColor(playerid, COLOR_YELLOW); format(string,sizeof(string),"{D7DF01}Taxi Company\n\nFahrer: %s\nKosten: %d$",SpielerName(playerid), pTaxi[i][taxiFare]); Update3DTextLabelText(taxi[i], COLOR_WHITE,string); pTaxi[i][taxiTimer] = SetTimerEx("Taxameter", 1000 * 30, true, "i", pTaxi[i][taxiVehicleID]); } } else { ShowPlayerDialog(playerid, DIALOG_TAXIFARE, DIALOG_STYLE_INPUT, "Taxi Company", "Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen.\nDerPreis muss mindestens 1$ und maximal 200$ sein.", "Weiter", "Aussteigen"); } } } } return 1; }
Habe das so...Wo muss ich es einfügen wen er auf Aussteigen klickt das er raus geworfen wird?
-
Wo muss ich es einfügen wen er auf Aussteigen klickt das er raus geworfen wird?
Habe ich doch geschrieben gehabt

So harmonisiert das else mit dem if(response)

-
Beitrag von noahschnapp ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: &//// (). -
In der Include von dem Streamer steht es aber so drin:
CreateDynamicActor(modelid, Float:x, Float:y, Float:z, Float:r, invulnerable = 1, Float:health = 100.0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_ACTOR_SD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);MfG.
-
Okay gut, ich hab keine Ahnung, welche Include du verwendest, eventuell mal posten? bzw Link?

-
Ganz Normal den Streamer.

Auch auf die neuste Version schon.
Link: https://github.com/samp-incogn…-streamer-plugin/releases
MfG.
-
Hab ich noch nicht mit gearbeitet, weiß nicht wie der das Aktualisiert und ob es da Zeiten gibt und wie ausgereift das ist.
Aufjedenfall muss, sobald du das Interior betrittst der Actor neu gestreamt werden.
Du solltest das aber anders machen.
Die Actor nicht Interior spezifisch spawnen lassen, sondern VirtualWorld spezifisch.
Das liegt eigentlich in ihrer Natur
-
Du meinst also das ich die Actor noch eine ID zuweißen soll, passt!

So, anstatt die Interior ID zu ändern, setze ich die Actor zB in die Virtuelle Welt 30, und wenn ich das Interior Betrete Neu Spawnen lasse, jetzt ist nur meine Frage, wie soll ich den Actor neu Streamen?MfG.
-
wie soll ich den Actor neu Streamen?
Eigentlich sollte das der Streamer automatisch regeln xD
Probiers einfach mal aus, wenn es nicht geht..eventuell online mal einen anderen streamer verwenden für die Actors, da gibts spezielle

-
@Kaliber
Bin gerade bissel am Verzweifeln.
Hab es mit Normalen Actor Funktion Probiert, via IDs und Virtuelle Welt, Spieler in die Virtuelle Welt gesetzt beim Betreten des Interiorers, Actor wird immer noch nicht Erscheint.
// Enum:
enum ActorDaten{
aID,
aName[256],
aSkin,
Float:aPosX,
Float:aPosY,
Float:aPosZ,
Float:aPosA,
aHealth,
aInvulnerable
}
new ActorInfo[][ActorDaten] = {
{0, ""#FARBE_ORANGE"Akira:"#FARBE_WEISS"\nEgal was du brauchst vom Bürgerbüro\nich besorge es dir!\n\n"#FARBE_ORANGE"'N' zum Interagieren.", 186, -2159.4829, 639.6165, 1057.5861, 36.5559, 100, 1} // -> Bürger Büro Actor
};// Erstellen / Laden:
for(new i = 0; i < sizeof(ActorInfo[]); i++)
{
CreateActor(ActorInfo[i][aSkin], ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], ActorInfo[i][aPosA]);
SetActorVirtualWorld(ActorInfo[i][aID], 30);
//CreateDynamicActor(ActorInfo[i][aSkin], ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], ActorInfo[i][aPosA], ActorInfo[i][aInvulnerable], ActorInfo[i][aHealth], 30);
//CreateDynamic3DTextLabel(ActorInfo[i][aName], -1, ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], 15.0);
}Hast du noch irgendeine Lösung parat?

-
Änderst du auch den Interior vom Spieler?
Wenn ja, probier einfach mal folgendes und setze im Callback [wiki]OnPlayerInteriorChange[/wiki] die Position von deinem Actor neu

Wenn du ihn dann immer noch nicht sehen solltest, dann porte dich mal zu ihm, ob er wirklich erstellt wird xD
-
@Kaliber
Hoffe du meinst es so.
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid){ for(new i = 0; i < sizeof(ActorInfo[]); i++) { SetActorPos(ActorInfo[i][aID], ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ]); } return 1;}
Wie soll ich denn so ein "Befehl" machen um mich zu ihn zu Teleportieren?
Einfach die Kordinanten aus dem Enum nehmen?
MfG.
// Edit:
Hab da gerade noch was gefunden, hab mal mein "OnGameModeInit" Geprintet, Naja, Ergebnis ist nicht sehr toll!
Der Print kommt nur bis "Mysql Log".public OnGameModeInit()
{
// [- GameMode Funktionen -]
SetGameModeText("DE: Reallife");
DisableInteriorEnterExits();// [- MySQL -]
Handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DATA);
mysql_log(ALL);
print("MySQL Log");
// [- Pickup Erstellen -]
for(new i = 0; i < sizeof(IntInfo[]); i++)
{
CreateDynamicPickup(1318, 0, IntInfo[i][iEingangX], IntInfo[i][iEingangY], IntInfo[i][iEingangZ]);
CreateDynamic3DTextLabel(IntInfo[i][iTitel], -1, IntInfo[i][iEingangX], IntInfo[i][iEingangY], IntInfo[i][iEingangZ], 15.0);
}
print("Pickup");
// [- Actor Erstellen -]
for(new i = 0; i < sizeof(ActorInfo[]); i++)
{
CreateActor(ActorInfo[i][aSkin], ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], ActorInfo[i][aPosA]);
SetActorVirtualWorld(ActorInfo[i][aID], 30);
//CreateDynamicActor(ActorInfo[i][aSkin], ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], ActorInfo[i][aPosA], ActorInfo[i][aInvulnerable], ActorInfo[i][aHealth], 30);
CreateDynamic3DTextLabel(ActorInfo[i][aName], -1, ActorInfo[i][aPosX], ActorInfo[i][aPosY], ActorInfo[i][aPosZ], 15.0);
}
print("Actor Erstellt");
return 1;
}MfG.
-
Hey,
nicht direkt eine Scriptingfrage, aber hat schon was Bugfix zutun.
Kann mir einer sagen, warum die Objekte buggen?
Das obere ist aus dem Mapeditor, das untere dann im Spiel.



Danke schonmal!

-
Einfach die Kordinanten aus dem Enum nehmen?
Jaa..einfach dich ins Interior setzen, ganz normal halt, so wie du normalerweise auch zu dem Actor kommen würdest

Kann mir einer sagen, warum die Objekte buggen?
Was genau "buggt" da?

Meinst du, weil die Objekte so quer stehen?
Das liegt dann an der Konvertierung zu SA:MP. Versuch es mit einem anderen Objekt oder mit einem anderen Editor
-
Was genau "buggt" da?
Im oberen Bild stehen die Objekte richtig und im Spiel dann in der Luft

-
Verwende mehrfach 'OnDialogResponse' in verschiedenen Includes meines Scripts, jedoch jeweils mit einem anderen Prefix (prefixOnDialogResponse).
Wenn ich aber im Spiel /help eingebe, öffnet sich der Login-Dialog statt des Help-Dialog. Hat jemand n' Lösungsvorschlag?
