Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 8 von 8
  1. Beiträge anzeigen #1 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline

    Zauber-slots abfragbar

    Hi. Ich frage mich, ob man die einzelnnen slots in denen man die zauber hat (sprich: shortcut 4-0) nach den enthaltenen spells abfragen kann.
    Also z.B.
    "Ist im Slot 5 der Zauber xy?"

    Dabei meine ich nicht den aktiven spell sondern auch die spells die sich nur "am Gürtel" befinden.

    (diesen hochachtungsvoll-kram spar ich mir heute )



    EDIT: ich habe jetzt den befehl unter den externen befehlen gefunden, frage mich aber welchen wert/name ich für spells bei category eintragen muss.

    Npc_GetInvItemBySlot(var c_npc self, var int category, var int slotnr)
    Geändert von mud-freak (13.05.2007 um 10:59 Uhr)

  2. Beiträge anzeigen #2 Zitieren
    Demigod Avatar von Sumpfkrautjunkie
    Registriert seit
    Nov 2004
    Ort
    München
    Beiträge
    9.091
     
    Sumpfkrautjunkie ist offline
    Afaik hilft dir Npc_GetInvItemBySlot hier nicht weiter, da mit slot hier wohl Kästchen im Inventar gemeint ist.
    Hier dazu mehr:
    http://forum.worldofplayers.de/forum...tInvItemBySlot

    Das Problem könntest du versuchen mit Equip und Unequip-Funktionen bei den Runen zu lösen, bei denen ein Zähler die Runennummer mitzählt.
    Sprich: Rune wird equippt, Variable um 1 erhöht , sodass die Anzahl der equippten Runen bekannt ist.
    Dazu wird in 7 Slotvariablen die Spellkonstante gespeichert:
    (Slotvariable_4 = SPL_FEUERBALL)
    4 wäre dann mit dem Feuerball belegt.


    Allerdings ergeben sich folgende Probleme:
    Der Spieler kann duch Gebrauch der Zifferntasten die Nummern ungeordnet vergeben und er kann jede beliebige Rune sofort unequippen(also auch in falscher Reihenfolge).

  3. Beiträge anzeigen #3 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Also, nach einigem probieren muss ich sagen, dass die Equip/Unequip funktion bei Runen nicht geht!(?)
    hab ich etwas falsch gemacht oder lieg ich mit meiner vermutung richtig?

    Code:
    INSTANCE ItRu_Enemy (C_Item)
    {
    	name 				=	NAME_Rune;
    
    	mainflag 			=	ITEM_KAT_RUNE;
    	flags 				=	0;
    
    	value 				=	Value_Ru_Enemy;
    
    	visual				=	"ItRu_Enemy.3ds";
    	material			=	MAT_STONE;
    	mag_circle			= 	3;
    
    	spell				= 	SPL_enemy;
    
    	wear				= 	WEAR_EFFECT;
    	effect				=	"SPELLFX_WEAKGLIMMER_RED";
    	
    	description			=	NAME_SPL_enemy;
    	
    	TEXT	[0]			=	NAME_Mag_Circle;			
    	COUNT	[0]			=	mag_circle;
    	
    	TEXT	[1]			=	NAME_Manakosten;			
    	COUNT	[1]			=	SPL_COST_enemy;
    	
    	TEXT	[5]			=	NAME_Value;					
    	COUNT	[5]			=	value;	
    			
    	on_equip			=	Equip_Enemy;
    	on_unequip			=	UnEquip_Enemy;
    };
    
    	func void Equip_Enemy()
    	{	
    		PrintScreen	("ENEMY_equip FUNKTION", -1,-1, FONT_Screen, 5);       //Zum prüfen
    		Rune_equip (ItRu_Enemy);       //Funktion außerhalb wird nicht durchlaufen
    	};
    
    	func void UnEquip_Enemy ()
    	{
    		PrintScreen	("ENEMY_UNequip FUNKTION", -1,-1, FONT_Screen, 5);	//Zum prüfen
    		Rune_unequip (ItRu_Enemy);       //Funktion außerhalb wird nicht durchlaufen
    	};

  4. Beiträge anzeigen #4 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    Ja geil. Ich wollte mit UnequipAllWeapons sämtliche Runen des Spielers entfernen. Das "funktioniert" auch insoweit, dass sie (in G1) nicht mehr rot hinterlegt sind.
    Aber die Zuweisung der Schnelltasten ist noch aktiv. Keine Ahnung wie ich DAS wegkriege. Hat da schon jemand was gefunden?

    Ich möchte im Grunde genommen ein "Strafsystem" für mordende und raubende Magier machen. Wer ein derartiges Verbrechen begeht, soll nicht mehr auf seine Runen zugreifen können.
    Ich habe das System so weit ausgeklügelt, dass die magischen Kreise auf 0 gesetzt werden. Allerdings werden die Kreise nur bei EQUIP geprüft und nicht beim "ziehen" des Zaubers. Das heißt, dass man trotz 0 Kreise noch alle seine equippten Runen benutzen kann. Die einfachste Lösung wäre unequippen, aber das funktioniert halt nicht.


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  5. Beiträge anzeigen #5 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von Bisasam Beitrag anzeigen
    Ja geil. Ich wollte mit UnequipAllWeapons sämtliche Runen des Spielers entfernen. Das "funktioniert" auch insoweit, dass sie (in G1) nicht mehr rot hinterlegt sind.
    Aber die Zuweisung der Schnelltasten ist noch aktiv. Keine Ahnung wie ich DAS wegkriege. Hat da schon jemand was gefunden?
    Die Klasse oCMag_Book die bei Ikarus dabei ist, ist für diesen Kram zuständig. Da müsstest du dir dann wahrscheinlich die zugehörigen engine Funktionen raus suchen um damit zu arbeiten.
    Code:
    //--------------------------------------
    // Magie buch
    //--------------------------------------
    
    /* Beschreibungen ergänzt von Mud-freak. Danke dafür! */
    
    /* Genutzt um den Kreis über dem Spieler bei der Zauberauswahl anzuzeigen 
     * außerdem für zuordnungen von Zaubern <-> Items <-> Tasten. */
    
    class oCMag_Book {
    [...]
    Zitat Zitat von Bisasam Beitrag anzeigen
    Ich möchte im Grunde genommen ein "Strafsystem" für mordende und raubende Magier machen. Wer ein derartiges Verbrechen begeht, soll nicht mehr auf seine Runen zugreifen können.
    Ich habe das System so weit ausgeklügelt, dass die magischen Kreise auf 0 gesetzt werden. Allerdings werden die Kreise nur bei EQUIP geprüft und nicht beim "ziehen" des Zaubers. Das heißt, dass man trotz 0 Kreise noch alle seine equippten Runen benutzen kann. Die einfachste Lösung wäre unequippen, aber das funktioniert halt nicht.
    Eine eher "simple" Idee wäre das man nur das Einsetzen der Zauber verhindert. Könntest du für alle Zauber in den entsprechenden Spell_Logic_XXX Funktionen machen:
    Code:
    func int Spell_Logic_ChargeFireball (var int manaInvested) 
    {
    	if(cannotUseInnosSpells) {
    		MEM_CALL(printCannotUseInnosSpells);
    		return SPL_DONTINVEST;	
    	};
    	
    	[...]
    Dann kann man die Zauber zwar noch ziehen, aber nicht einsetzten.
    Geändert von Cryp18Struct (03.01.2019 um 14:06 Uhr)

  6. Beiträge anzeigen #6 Zitieren
    Knight Avatar von Draxes
    Registriert seit
    Aug 2007
    Ort
    Mainz
    Beiträge
    1.920
     
    Draxes ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Hi. Ich frage mich, ob man die einzelnnen slots in denen man die zauber hat (sprich: shortcut 4-0) nach den enthaltenen spells abfragen kann.
    Also z.B.
    "Ist im Slot 5 der Zauber xy?"

    Dabei meine ich nicht den aktiven spell sondern auch die spells die sich nur "am Gürtel" befinden.

    (diesen hochachtungsvoll-kram spar ich mir heute )



    EDIT: ich habe jetzt den befehl unter den externen befehlen gefunden, frage mich aber welchen wert/name ich für spells bei category eintragen muss.
    Wir haben für unsere Schnellzauber eine recht umständliche Art und Weise das zu Lösen, führt aber zu einem Ergebnis. Je nachdem, was du damit machen willst. Dabei Fragen wir ab, ob ein bestimmter Zauber (bzw. eine bestimmte Rune) an einem bestimmten Slot equipped ist.

    Code:
    const int ocMagBook__GetKeyByItem = 4693296;// 0x00479D30; len:5 ret:int
    
    func int wrapMagBookGetKeyByItem(var int itemInst){
    	if (!Npc_HasItems(hero, itemInst)) {
    		pd_si("wrapMagBookGetKeyByItem: player does not have item:", itemInst);
    		return -1;
    	};
    	Npc_GetInvItem(hero, itemInst);
    	var c_item rune;
    	var int runePtr;
    	runePtr = _@(item);
    	rune = MEM_PtrToInst(runePtr);
    	
    	var int npcPtr; npcPtr = _@(hero);
    	var oCNpc npcOC; npcOC = _^(npcPtr);
    	
    	var int key;
    	
        // Get the magic book to retrieve the key
        var int magBookPtr; magBookPtr = npcOC.mag_book;
        const int call = 0;
        if (CALL_Begin(call)) {
    		CALL_PtrParam(_@(runePtr)); //
            CALL__thiscall(_@(magBookPtr), ocMagBook__GetKeyByItem);
            call = CALL_End();
        };
    	key = CALL_RetValAsInt();
    	
    	//print (ConcatStrings("key: ", IntToString(key)));
    	return key;
    };
    
    // Verwendung
    	var int spellSlotNumber_ChargeFireball; spellSlotNumber_ChargeFireball = wrapMagBookGetKeyByItem(ItRu_ChargeFireball);
    	if(spellSlotNumber_ChargeFireball == 1) {
    		print("ChargeFireball ist auf der Taste 4");
    	};
            if(spellSlotNumber_ChargeFireball == 2) {
    		print("ChargeFireball ist auf der Taste 5");
    	};

  7. Beiträge anzeigen #7 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Draxes Beitrag anzeigen
    Wir haben für unsere Schnellzauber eine recht umständliche Art und Weise das zu Lösen, führt aber zu einem Ergebnis. Je nachdem, was du damit machen willst. Dabei Fragen wir ab, ob ein bestimmter Zauber (bzw. eine bestimmte Rune) an einem bestimmten Slot equipped ist.
    Danke für deine Antwort! Vor 12 Jahren habe ich glaube ich schon eine Lösung gefunden
    Warum der Thread hier wieder ausgegraben wurde weiß ich nicht. Dar Problem scheint doch eher ein anderes?

  8. Beiträge anzeigen #8 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    ich habe mein Problem ganz ohne Ikarus und LeGo gelöst:

    Einfach ALLE Runen im inventar zerstören und wiederherstellen. Klappt


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide