dylanpilgrim Posted March 24, 2011 Author Share Posted March 24, 2011 Hello, could you please help me?For example, I made quest on this tutorial http://www.touchofdeathforums.com/smf/index.php/topic,68426.0.htmlAfter, I try to add **NPC Speech Box** http://www.touchofdeathforums.com/smf/index.php/topic,68317.0.htmlBut in the end, nothing worked. But if done out separately, everything is ok.How do I solve this problem? And necessarily need to use **Vb version 6**? Or I can use another (For example, **Visual Studio 2010**)?And sorry for my english, I'm from another country.Help me **please**. Link to comment Share on other sites More sharing options...
iSKweek Posted March 24, 2011 Share Posted March 24, 2011 Yes you need VB6 enterprise (or professional).Paste your playerattacknpc sub (in code tags) from modCombat in server.vbp and I will see if I can help. Link to comment Share on other sites More sharing options...
dylanpilgrim Posted March 24, 2011 Author Share Posted March 24, 2011 Forgot to say, after adding scripts, NPC sprites disappear:![](http://i56.tinypic.com/b4dwdc.jpg)And sub:```Public Sub PlayerAttackNpc(ByVal attacker As Long, ByVal mapNpcNum As Long, ByVal Damage As Long, Optional ByVal spellnum As Long, Optional ByVal overTime As Boolean = False) Dim Name As String Dim exp As Long Dim n As Long Dim i As Long Dim STR As Long Dim DEF As Long Dim mapNum As Long Dim npcNum As Long Dim Buffer As clsBuffer ' Check for subscript out of range If IsPlaying(attacker) = False Or mapNpcNum <= 0 Or mapNpcNum > MAX_MAP_NPCS Or Damage < 0 Then Exit Sub End If mapNum = GetPlayerMap(attacker) npcNum = MapNpc(mapNum).Npc(mapNpcNum).Num Name = Trim$(Npc(npcNum).Name) ' Check for weapon n = 0 If GetPlayerEquipment(attacker, Weapon) > 0 Then n = GetPlayerEquipment(attacker, Weapon) End If ' set the regen timer TempPlayer(attacker).stopRegen = True TempPlayer(attacker).stopRegenTimer = GetTickCount If Damage >= MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP) Then SendActionMsg GetPlayerMap(attacker), "-" & MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP), BrightRed, 1, (MapNpc(mapNum).Npc(mapNpcNum).x * 32), (MapNpc(mapNum).Npc(mapNpcNum).y * 32) SendBlood GetPlayerMap(attacker), MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y ' send the sound If spellnum > 0 Then SendMapSound attacker, MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y, SoundEntity.seSpell, spellnum ' send animation If n > 0 Then If Not overTime Then If spellnum = 0 Then Call SendAnimation(mapNum, Item(GetPlayerEquipment(attacker, Weapon)).Animation, MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y) End If End If ' Calculate exp to give attacker exp = Npc(npcNum).exp ' Make sure we dont get less then 0 If exp < 0 Then exp = 1 End If ' in party? If TempPlayer(attacker).inParty > 0 Then ' pass through party sharing function Party_ShareExp TempPlayer(attacker).inParty, exp, attacker Else ' no party - keep exp for self GivePlayerEXP attacker, exp End If 'Drop the goods if they get it n = Int(Rnd * Npc(npcNum).DropChance) + 1 If n = 1 Then Call SpawnItem(Npc(npcNum).DropItem, Npc(npcNum).DropItemValue, mapNum, MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y) End If ' Now set HP to 0 so we know to actually kill them in the server loop (this prevents subscript out of range) MapNpc(mapNum).Npc(mapNpcNum).Num = 0 MapNpc(mapNum).Npc(mapNpcNum).SpawnWait = GetTickCount MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP) = 0 ' clear DoTs and HoTs For i = 1 To MAX_DOTS With MapNpc(mapNum).Npc(mapNpcNum).DoT(i) .Spell = 0 .Timer = 0 .Caster = 0 .StartTime = 0 .Used = False End With With MapNpc(mapNum).Npc(mapNpcNum).HoT(i) .Spell = 0 .Timer = 0 .Caster = 0 .StartTime = 0 .Used = False End With Next ' send death to the map Set Buffer = New clsBuffer Buffer.WriteLong SNpcDead Buffer.WriteLong mapNpcNum SendDataToMap mapNum, Buffer.ToArray() Set Buffer = Nothing 'Loop through entire map and purge NPC from targets For i = 1 To Player_HighIndex If IsPlaying(i) And IsConnected(i) Then If Player(i).Map = mapNum Then If TempPlayer(i).targetType = TARGET_TYPE_NPC Then If TempPlayer(i).target = mapNpcNum Then TempPlayer(i).target = 0 TempPlayer(i).targetType = TARGET_TYPE_NONE SendTarget i End If End If End If End If Next Else ' NPC not dead, just do the damage MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP) = MapNpc(mapNum).Npc(mapNpcNum).Vital(Vitals.HP) - Damage ' Check for a weapon and say damage SendActionMsg mapNum, "-" & Damage, BrightRed, 1, (MapNpc(mapNum).Npc(mapNpcNum).x * 32), (MapNpc(mapNum).Npc(mapNpcNum).y * 32) SendBlood GetPlayerMap(attacker), MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y ' send the sound If spellnum > 0 Then SendMapSound attacker, MapNpc(mapNum).Npc(mapNpcNum).x, MapNpc(mapNum).Npc(mapNpcNum).y, SoundEntity.seSpell, spellnum ' send animation If n > 0 Then If Not overTime Then If spellnum = 0 Then Call SendAnimation(mapNum, Item(GetPlayerEquipment(attacker, Weapon)).Animation, 0, 0, TARGET_TYPE_NPC, mapNpcNum) End If End If ' Set the NPC target to the player MapNpc(mapNum).Npc(mapNpcNum).targetType = 1 ' player MapNpc(mapNum).Npc(mapNpcNum).target = attacker ' Now check for guard ai and if so have all onmap guards come after'm If Npc(MapNpc(mapNum).Npc(mapNpcNum).Num).Behaviour = NPC_BEHAVIOUR_GUARD Then For i = 1 To MAX_MAP_NPCS If MapNpc(mapNum).Npc(i).Num = MapNpc(mapNum).Npc(mapNpcNum).Num Then MapNpc(mapNum).Npc(i).target = attacker MapNpc(mapNum).Npc(i).targetType = 1 ' player End If Next End If ' set the regen timer MapNpc(mapNum).Npc(mapNpcNum).stopRegen = True MapNpc(mapNum).Npc(mapNpcNum).stopRegenTimer = GetTickCount ' if stunning spell, stun the npc If spellnum > 0 Then If Spell(spellnum).StunDuration > 0 Then StunNPC mapNpcNum, mapNum, spellnum ' DoT If Spell(spellnum).Duration > 0 Then AddDoT_Npc mapNum, mapNpcNum, spellnum, attacker End If End If SendMapNpcVitals mapNum, mapNpcNum End If If spellnum = 0 Then ' Reset attack timer TempPlayer(attacker).AttackTimer = GetTickCount End IfEnd Sub```And if I change something after, then I getting an error "**Run-time error '380' Invalid property value**". Link to comment Share on other sites More sharing options...
MrKris Posted March 25, 2011 Share Posted March 25, 2011 You might have just erased the sprite in your graphics folder. That did not happen to me when I put in the code. Double check all your files and see if anything is missing. Link to comment Share on other sites More sharing options...
dylanpilgrim Posted March 27, 2011 Author Share Posted March 27, 2011 No, all is good with files…Somebody help me : ( Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now