-
Zitat von DarK_RaveN
Hast du schon eine Mod gemacht? Wenn ja, welche? (Mit Link ^^)
Du solltest mal dein Gedächtnis trainieren, er hat sie dir schonmal aufgezählt
Aber es waren Bloodnight, eine Weihnachtsmod, Death Night (fast fertig, wurde von ihm dann aber auf Eis gelegt), Sumpfscavenger...
-
Zitat von lehona
Du solltest mal dein Gedächtnis trainieren, er hat sie dir schonmal aufgezählt
Aber es waren Bloodnight, eine Weihnachtsmod, Death Night (fast fertig, wurde von ihm dann aber auf Eis gelegt), Sumpfscavenger...
und was is mit der besten mod? duell?
♥ HolyWater ♥ YAY xD
-
Ich möchte diesen alten Thread nochmal ausgraben, weil ich die Spieler kann dem Helden einen Namen geben Funktion gerne in meine Mod einbauen möchte.
Es funktioniert auch schon bei mir, nur leider überlebt der eingegebene Namen Speichern/Laden nicht.
Gibt es dafür heutzutage vielleicht eine Lösung?
-
-
Cool, danke! Wie kann ich den namestring jetzt mit PermMem speichern? Check das nicht so ganz.
-
-
Das klingt jetzt vielleicht dämlich, aber ich weiß echt nicht wie ich das noch detaillierter vormachen könnte.
Das verlinkte Beispiel speichert ja bereits einen String.
Was hast du denn bisher versucht und was funktioniert nicht?
Oder was verstehst du nicht?
-
Bisher überlebt der Namestring Speichern und Laden, aber nicht einen Neustart des Spiels.
Auch wird der Namestring nicht in den Dialogboxen ausgeben.
Hier mal die verwendeten Skripts, vielleicht findet ja jemand den oder die Fehler.
Code:
const int zCView__DialogMessageCXY_G1 = 7337648;
//006FF6B0 .text Debug data ?DialogMessageCXY@zCView@@QAEXABVzSTRING@@0MAAUzCOLOR@@@Z
const int zCView__DialogMessageCXY_G2 = 8032832;
//0x007A9240 public: void __thiscall zCView::DialogMessageCXY(class zSTRING const &,class zSTRING const &,float,struct zCOLOR &)
FUNC VOID _HOOK_DIALOGMESSAGECXY ()
{
/*
enum oTGameDialogView
{
GAME_VIEW_SCREEN ,
GAME_VIEW_CONVERSATION ,
GAME_VIEW_AMBIENT ,
GAME_VIEW_CINEMA ,
GAME_VIEW_CHOICE ,
GAME_VIEW_NOISE ,
GAME_VIEW_MAX
}*/
const int cGAME_VIEW_CONVERSATION = 1;
const int cGAME_VIEW_NOISE = 5;
var int color;
var string npcName;
npcName = MEM_ReadString (MEM_ReadInt (ESP + 4));
var string dlgText;
dlgText = MEM_ReadString (MEM_ReadInt (ESP + 8));
//Dialog conversation
if (ECX == MEM_Game.array_view [cGAME_VIEW_CONVERSATION])
{
//Change color - different for hero, different for NPC
if (STR_Len (npcName) == 0) //hero's name is empty string
{
//hero
color = RGBA (255, 255, 0, 255); //YELLOW
//Update hero's name
MEM_WriteString (MEM_ReadInt (ESP + 4), Namestring);
} else
{
//NPC
color = RGBA (255, 255, 0, 255); //YELLOW
};
} else
//Noise conversation
if (ECX == MEM_Game.array_view [cGAME_VIEW_NOISE])
{
//Change color to green
color = RGBA (255, 255, 0, 255); //YELLOW
};
MEM_WriteInt (MEM_ReadInt (ESP + 16), color);
};
Code:
///////////////////////////////////////////////////////////////////////
//Info name
///////////////////////////////////////////////////////////////////////
INSTANCE DIA_TestNPC_name (C_INFO)
{
npc = XardasSkeleton;
nr = 2;
condition = DIA_TestNPC_name_Condition;
information = DIA_TestNPC_name_Info;
permanent = TRUE;
description = "Name eingeben";
};
FUNC INT DIA_TestNPC_name_Condition()
{
Namestring=""; //reset von Namestring, damit man was neues eingeben kann
return TRUE;
};
FUNC VOID DIA_TestNPC_name_Info()
{
Info_ClearChoices(DIA_TestNPC_name);
Info_AddChoice(DIA_TestNPC_name, "Ende" ,DIA_TestNPC_name_Ende);
Info_AddChoice(DIA_TestNPC_name, "A",DIA_TestNPC_name_a0);
Info_AddChoice(DIA_TestNPC_name, "B",DIA_TestNPC_name_b0);
Info_AddChoice(DIA_TestNPC_name, "C",DIA_TestNPC_name_c0);
Info_AddChoice(DIA_TestNPC_name, "D",DIA_TestNPC_name_d0);
Info_AddChoice(DIA_TestNPC_name, "E",DIA_TestNPC_name_e0);
Info_AddChoice(DIA_TestNPC_name, "F",DIA_TestNPC_name_f0);
Info_AddChoice(DIA_TestNPC_name, "G",DIA_TestNPC_name_g0);
Info_AddChoice(DIA_TestNPC_name, "H",DIA_TestNPC_name_h0);
Info_AddChoice(DIA_TestNPC_name, "I",DIA_TestNPC_name_i0);
Info_AddChoice(DIA_TestNPC_name, "J",DIA_TestNPC_name_j0);
Info_AddChoice(DIA_TestNPC_name, "K",DIA_TestNPC_name_k0);
Info_AddChoice(DIA_TestNPC_name, "L",DIA_TestNPC_name_l0);
Info_AddChoice(DIA_TestNPC_name, "M",DIA_TestNPC_name_m0);
Info_AddChoice(DIA_TestNPC_name, "N",DIA_TestNPC_name_n0);
Info_AddChoice(DIA_TestNPC_name, "O",DIA_TestNPC_name_o0);
Info_AddChoice(DIA_TestNPC_name, "P",DIA_TestNPC_name_p0);
Info_AddChoice(DIA_TestNPC_name, "Q",DIA_TestNPC_name_q0);
Info_AddChoice(DIA_TestNPC_name, "R",DIA_TestNPC_name_r0);
Info_AddChoice(DIA_TestNPC_name, "S",DIA_TestNPC_name_s0);
Info_AddChoice(DIA_TestNPC_name, "T",DIA_TestNPC_name_t0);
Info_AddChoice(DIA_TestNPC_name, "U",DIA_TestNPC_name_u0);
Info_AddChoice(DIA_TestNPC_name, "V",DIA_TestNPC_name_v0);
Info_AddChoice(DIA_TestNPC_name, "W",DIA_TestNPC_name_w0);
Info_AddChoice(DIA_TestNPC_name, "X",DIA_TestNPC_name_x0);
Info_AddChoice(DIA_TestNPC_name, "Y",DIA_TestNPC_name_y0);
Info_AddChoice(DIA_TestNPC_name, "Z",DIA_TestNPC_name_z0);
Info_AddChoice(DIA_TestNPC_name, "a",DIA_TestNPC_name_a1);
Info_AddChoice(DIA_TestNPC_name, "b",DIA_TestNPC_name_b1);
Info_AddChoice(DIA_TestNPC_name, "c",DIA_TestNPC_name_c1);
Info_AddChoice(DIA_TestNPC_name, "d",DIA_TestNPC_name_d1);
Info_AddChoice(DIA_TestNPC_name, "e",DIA_TestNPC_name_e1);
Info_AddChoice(DIA_TestNPC_name, "f",DIA_TestNPC_name_f1);
Info_AddChoice(DIA_TestNPC_name, "g",DIA_TestNPC_name_g1);
Info_AddChoice(DIA_TestNPC_name, "h",DIA_TestNPC_name_h1);
Info_AddChoice(DIA_TestNPC_name, "i",DIA_TestNPC_name_i1);
Info_AddChoice(DIA_TestNPC_name, "j",DIA_TestNPC_name_j1);
Info_AddChoice(DIA_TestNPC_name, "k",DIA_TestNPC_name_k1);
Info_AddChoice(DIA_TestNPC_name, "l",DIA_TestNPC_name_l1);
Info_AddChoice(DIA_TestNPC_name, "m",DIA_TestNPC_name_m1);
Info_AddChoice(DIA_TestNPC_name, "n",DIA_TestNPC_name_n1);
Info_AddChoice(DIA_TestNPC_name, "o",DIA_TestNPC_name_o1);
Info_AddChoice(DIA_TestNPC_name, "p",DIA_TestNPC_name_p1);
Info_AddChoice(DIA_TestNPC_name, "q",DIA_TestNPC_name_q1);
Info_AddChoice(DIA_TestNPC_name, "r",DIA_TestNPC_name_r1);
Info_AddChoice(DIA_TestNPC_name, "s",DIA_TestNPC_name_s1);
Info_AddChoice(DIA_TestNPC_name, "t",DIA_TestNPC_name_t1);
Info_AddChoice(DIA_TestNPC_name, "u",DIA_TestNPC_name_u1);
Info_AddChoice(DIA_TestNPC_name, "v",DIA_TestNPC_name_v1);
Info_AddChoice(DIA_TestNPC_name, "w",DIA_TestNPC_name_w1);
Info_AddChoice(DIA_TestNPC_name, "x",DIA_TestNPC_name_x1);
Info_AddChoice(DIA_TestNPC_name, "y",DIA_TestNPC_name_y1);
Info_AddChoice(DIA_TestNPC_name, "z",DIA_TestNPC_name_z1);
};
var int handleEinesSpezifischen_Strings; // globale Variable, hier landet eine Zahl(Ist es das 1. oder das 2. oder das 3. ... Objekt das von PermMem verwaltet wird?)
func void speichereStringMitPermMem(){
handleEinesSpezifischen_Strings = new(string@); // Ein neues Objekt der Klasse _string anlegen[_string ist nicht das gleiche wie string!] und in der Variable "handleEinesSpezifischen_Strings" abspeichern das wievielte PermMem Objekt es ist
var _string permMemObjekt; permMemObjekt = get(handleEinesSpezifischen_Strings); // PermMem! Gib mir eine Referenz auf das von dir verwaltete Objekt das mit der Zahl "handleEinesSpezifischen_Strings" zu tun hat. Ich weiss das ist vom Typ _string (NICHT string)
permMemObjekt.s = Namestring; //In dem string(Innerhalb des von PermMem verwaltetem _string Objekt) wird ein Wert gespeichert.
};
func void DIA_TestNPC_name_Ende()
{
hero.name=Namestring;
AI_StopProcessInfos(self);
};
func void DIA_TestNPC_name_a1 ()
{
Namestring=ConcatStrings(Namestring,"a");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_b1 ()
{
Namestring=ConcatStrings(Namestring,"b");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_c1 ()
{
Namestring=ConcatStrings(Namestring,"c");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_d1 ()
{
Namestring=ConcatStrings(Namestring,"d");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_e1 ()
{
Namestring=ConcatStrings(Namestring,"e");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_f1 ()
{
Namestring=ConcatStrings(Namestring,"f");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_g1 ()
{
Namestring=ConcatStrings(Namestring,"g");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_h1 ()
{
Namestring=ConcatStrings(Namestring,"h");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_i1 ()
{
Namestring=ConcatStrings(Namestring,"i");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_j1 ()
{
Namestring=ConcatStrings(Namestring,"j");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_k1 ()
{
Namestring=ConcatStrings(Namestring,"k");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_l1 ()
{
Namestring=ConcatStrings(Namestring,"l");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_m1 ()
{
Namestring=ConcatStrings(Namestring,"m");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_n1 ()
{
Namestring=ConcatStrings(Namestring,"n");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_o1 ()
{
Namestring=ConcatStrings(Namestring,"o");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_p1 ()
{
Namestring=ConcatStrings(Namestring,"p");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_q1 ()
{
Namestring=ConcatStrings(Namestring,"q");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_r1 ()
{
Namestring=ConcatStrings(Namestring,"r");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_s1 ()
{
Namestring=ConcatStrings(Namestring,"s");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_t1 ()
{
Namestring=ConcatStrings(Namestring,"t");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_u1 ()
{
Namestring=ConcatStrings(Namestring,"u");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_v1 ()
{
Namestring=ConcatStrings(Namestring,"v");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_w1 ()
{
Namestring=ConcatStrings(Namestring,"w");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_x1 ()
{
Namestring=ConcatStrings(Namestring,"x");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_y1 ()
{
Namestring=ConcatStrings(Namestring,"y");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_z1 ()
{
Namestring=ConcatStrings(Namestring,"z");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_a0 ()
{
Namestring=ConcatStrings(Namestring,"A");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_b0 ()
{
Namestring=ConcatStrings(Namestring,"B");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_c0 ()
{
Namestring=ConcatStrings(Namestring,"C");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_d0 ()
{
Namestring=ConcatStrings(Namestring,"D");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_e0 ()
{
Namestring=ConcatStrings(Namestring,"E");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_f0 ()
{
Namestring=ConcatStrings(Namestring,"F");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_g0 ()
{
Namestring=ConcatStrings(Namestring,"G");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_h0 ()
{
Namestring=ConcatStrings(Namestring,"H");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_i0 ()
{
Namestring=ConcatStrings(Namestring,"I");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_j0 ()
{
Namestring=ConcatStrings(Namestring,"J");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_k0 ()
{
Namestring=ConcatStrings(Namestring,"K");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_l0 ()
{
Namestring=ConcatStrings(Namestring,"L");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_m0 ()
{
Namestring=ConcatStrings(Namestring,"M");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_n0 ()
{
Namestring=ConcatStrings(Namestring,"N");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_o0 ()
{
Namestring=ConcatStrings(Namestring,"O");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_p0 ()
{
Namestring=ConcatStrings(Namestring,"P");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_q0 ()
{
Namestring=ConcatStrings(Namestring,"Q");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_r0 ()
{
Namestring=ConcatStrings(Namestring,"R");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_s0 ()
{
Namestring=ConcatStrings(Namestring,"S");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_t0 ()
{
Namestring=ConcatStrings(Namestring,"T");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_u0 ()
{
Namestring=ConcatStrings(Namestring,"U");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_v0 ()
{
Namestring=ConcatStrings(Namestring,"V");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_w0 ()
{
Namestring=ConcatStrings(Namestring,"W");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_x0 ()
{
Namestring=ConcatStrings(Namestring,"X");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_y0 ()
{
Namestring=ConcatStrings(Namestring,"Y");
DIA_TestNPC_name_Info();
};
func void DIA_TestNPC_name_z0 ()
{
Namestring=ConcatStrings(Namestring,"Z");
DIA_TestNPC_name_Info();
};
Code:
instance PC_Hero(Npc_Default)
{
name[0] = Namestring;
guild = GIL_NONE;
id = 0;
voice = 15;
level = 0;
npcType = npctype_main;
bodyStateInterruptableOverride = TRUE;
exp = 0;
exp_next = 500;
lp = 0;
attribute[ATR_STRENGTH] = 5;
attribute[ATR_DEXTERITY] = 5;
attribute[ATR_MANA_MAX] = 5;
attribute[ATR_MANA] = 5;
attribute[ATR_HITPOINTS_MAX] = 50;
attribute[ATR_HITPOINTS] = 50;
Mdl_SetVisual(self,"HUMANS.MDS");
Mdl_SetVisualBody(self,"hum_body_Naked0",1,0,"Hum_Head_Pony",Face_N_PlayerUnshaved,0,ItAr_HERO);
Mdl_SetModelFatness(self,-0.5);
//Mdl_SetVisual(self,"Orc.mds");
//Mdl_SetVisualBody(self,"Orc_BodyWarrior",DEFAULT,DEFAULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1);
B_SetFightSkills(self,5);
};
-
15.12.2019 09:58
#69
name[0] = Namestring;
-
-
15.12.2019 12:37
#71
-
Danke. Okay, jetzt wird der Name in der Dialogbox angezeigt, aber einen Neustart überlebt der Name noch nicht.
-
Hier vielleicht noch jemand eine Lösung für das Neustart Problem?
-
Hab jetzt eine Lösung für die Namensgebung:
Die Funktion von F a w k e s aus diesem Beitrag: https://forum.worldofplayers.de/foru...1#post26255423 einfach so abändern:
Code:
......
//Update hero's name
MEM_WriteString (MEM_ReadInt (ESP + 4), MEM_GetModOpt("SETTINGS","Name"));
......
Dann und nur dann, wenn der Spieler in der Mod-Ini auf seinem PC bei der Sektion [SETTINGS] die Zeile Name=X-beliebiger Name hinzufügt, erscheint in den Dialogen der vom Spiel gewählte Name beim Helden, sonst ist es leer.
Beispiel aus meiner Mod-Ini:
[SETTINGS]
World=NewWorld\NewWorld.zen
Player=PC_Hero
Name=Lucas
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|